더북(TheBook)

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
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.