코틀린/코틀린인액션
[코틀린 인 액션] 4.2.3 인터페이스에 선언된 프로퍼티 구현
OverTheHorizon3410
2024. 3. 4. 15:18
- 코틀린에서 인터페이스의 경우 추상 프로퍼티를 포함할 수 있다.
- 인터페이스를 구현하는 클래스가 해당 프로퍼티에 대한 구현을 제공해야 한다.
추상 프로퍼티 선언 예시
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