세터, 게터

OneTwoThree·2022년 7월 30일
0

부스트코스 코틀린

목록 보기
25/26
post-thumbnail

[부스트코스]세터,게터

코틀린의 프로퍼티

자바의 필드는 말 그대로 변수 선언만 하기 때문에 따로 접근을 위한 메소드를 만들어야 한다.

자바는 위와 같이 게터, 세터를 정의해준다.

코틀린의 프로퍼티는 기본적인 접근 메소드를 가지고 있다.
따로 접근 메소드를 만들지 않아도 내부적으로 생성한다.

Getter, Setter

게터, 세터를 합쳐 접근 메소드라 한다.

코틀린에서는 접근 메소드가 자동으로 생성된다.
따라서 val인지 var인지만 정해주면 생성자와 프로퍼티, 접근 메소드까지 한번에 만들 수 있다.

이때 val 로 선언된 불변 변수는 setter를 가질 수 없다.

코드 자체만 보면 user.name과 user.age에 직접 접근하는 것 같지만 코틀린 내부적으로는 getName과 setAge 즉 게터와 세터가 호출된다.

게터 , 세터 직접 정의

게터와 세터 메소드를 직접 정의할 수 있다.

다음과 같이 프로퍼티를 초기화 하는 부분에 들여쓰기로 게터와 세터를 정의한다.
이 때 id 프로퍼티의 게터 반환값으로 id 프로퍼티를 다시 넣는다면 무한 재귀에 빠지게 된다. 따라서 field라는 포인터를 사용해서 게터, 세터를 정의하게 된다.

field는 프로퍼티를 참조하는 변수로 보조 필드라 불린다.


임시적인 보조 프로퍼티를 사용하기도 한다.
tempName은 임시적인 보조 프로퍼티로 프로퍼티 name의 게터의 정의에 tempName을 이용한다.


프로퍼티가 open으로 선언된 경우 자식 클래스에서 프로퍼티를 오버라이딩 하고 게터 또한 다르게 정의할 수 있다.

0개의 댓글