[코틀린 인 액션] 4.2.3 인터페이스에 선언된 프로퍼티 구현

  • 코틀린에서 인터페이스의 경우 추상 프로퍼티를 포함할 수 있다.
  • 인터페이스를 구현하는 클래스가 해당 프로퍼티에 대한 구현을 제공해야 한다.

추상 프로퍼티 선언 예시

interface User {
    val nickname: String
}

//주 생성자에서 프로퍼티를 직접 선언한다.
class PrivateUser(override val nickname: String) : User {
    /*User 의 추상 프로퍼티를 override 키워드로 구현*/
}


// 커스텀 게터를 사용한다.
class SubscribingUser(val email: String) : User {
    /*이메일 주소에서 별명을 계산하여 반환하는 커스텀 게터 사용*/
    override val nickname: String
        get() = email.substringBefore('@')
}

// 초기화 식을 사용한다.
class FacebookUser(val accountId: Int) : User {
    //객체 초기화시 계산한 데이터를 저장하고, 이를 nickname 의 프로퍼티 값으로 사용
    override val nickname = getFacebookName(accountId)
}

인터페이스에서 게터와 세터가 있는 프로퍼티 선언

interface User {
    val email: String
    val nickname: String
        get() = email.substringBefore('@')
}
  • email은 추상 프로퍼티로 하위 클래스에서 반드시 구현해야 합니다.
  • nickname은 커스텀 게터를 사용하여 구현되며, 하위 클래스에서 오버라이드하지 않고 상속할 수 있습니다.

클래스에서 구현된 프로퍼티와 접근자

  • 클래스에서 구현된 프로퍼티는 뒷받침하는 필드를 원하는 대로 사용 가능.

Uploaded by N2T