4.3.3 커스텀 접근자 사용하기
지금까지 살펴본 프로퍼티는 근본적으로 어떤 코틀린 클래스의 인스턴스나 어떤 파일 안의 문맥(이런 경우 JVM에서는 특별한 파사드 클래스 인스턴스로 파일 내 문맥을 저장한다) 내에 저장된 일반 변수처럼 작동했다. 하지만 코틀린 프로퍼티의 실제 능력은 변수와 함수의 동작을 한 선언 안에 조합할 수 있는 기능에 있다. 이런 기능은 커스텀 접근자(custom accessor)를 통해 이뤄진다. 커스텀 접근자는 프로퍼티 값을 읽거나 쓸 때 호출되는 특별한 함수다.
다음 예제는 프로퍼티 값을 읽을 때 사용하는 커스텀 게터(getter)를 정의한다.
class Person(val firstName: String, val familyName: String) { val fullName: String get(): String { return "$firstName $familyName" } }
게터는 프로퍼티 정의 끝에 붙으며 기본적으로 이름 대신 get이라는 키워드가 붙은 함수처럼 보인다. 하지만 이런 프로퍼티를 읽으면 프로그램이 자동으로 게터를 호출한다.
fun main() {
val person = Person("John", "Doe")
println(person.fullName) // John Doe
}