인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

아이비의 안드로이드 드릴

[실습] 7. 추상클래스와 인터페이스

[실습] 7. 추상클래스와 인터페이스 에서 stepCount에 대한 질문이 있습니다.

해결된 질문

작성

·

268

·

수정됨

0

해결완료 질문입니다.

답변 1

0

아이비님의 프로필 이미지
아이비
지식공유자

안녕하세요, 이훈님.

질문하신 내용 모두 확인했습니다.

getter와 assign의 차이가 아직 정립이 안되신 상황이네요. 강의 내용을 다시 복습해주시면 아래 제 질문에 답변하는데 도움이 될 것입니다. 관련 강의 내용은 [개념] 6. 클래스 (1) 선언 방법 6분~ 부터 다시 확인해주시면 좋겠습니다. 이해를 돕기 위해 질문을 드리겠습니다.

이 코드를 1번으로 지칭하고,

    override var stepCount: Int
        get() = 0
        set(value) {}

아래 코드를 2번으로 지칭하여 질문드리겠습니다.

override var stepCount: Int=5 

1번, 2번은 같은 동작을 하는 코드가 아닙니다.

제 질문은 두 가지 입니다.

  1. 둘 중 getter를 구현한 코드와 assign을 구현한 코드를 구별해주세요.

  2. 그리고 두 코드가 어떻게 다른가요?

     

그리고 앞으로는 위 질문처럼 강의 내용을 모두 첨부해야하는 경우에는 디스코드 채널에서 질문해주세요. Q&A는 공개 링크로 내용을 모두 확인할 수 있으니까요.

확인 후 답변부탁드립니다 😀

질문을 삭제하여도 질문글이 남는다고 하여, 본문내용을 삭제하였습니다.


추가 학습을 통해 아래와 같이 이해하였습니다.

getter

    override var stepCount: Int
        get() = 0
        set(value) {}

getter를 구현한 코드이다.

변수가 참조될 때에 (&stepCount)

get()의 오른쪽을 반환한다.

(코틀린에서 클래스의 변수를 참조할 때 자바의 getStepCount()와 비슷한 동작이기 때문 )

assign

override var stepCount: Int=5

변수에 값을 직접 할당하는 코드이다.

stepCount 자체에 5가 들어간다.


앞으로는 질문글 작성에 유의하겠습니다. 좋은 하루 되세요!

아이비님의 프로필 이미지
아이비
지식공유자

질문에 답변하면서 문제 해결을 잘 하신 것으로 보입니다 👍

getter로 구현하셨던 예제 코드는 호출될 때마다 항상 0을 반환한 것이고, 변수에 값을 할당(assign)한 코드는 5로 초기화가 되고 이후 연산을 수행했던 것이죠.

문제 해결이 잘 되신 거죠? 복습도 잘 하셨습니다 👍

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기