안드로이드/Kotlin 문법
코틀린 클래스 위임(Class Delegation)
Link2Me
2024. 2. 6. 01:07
728x90
하나의 클래스를 다른 클래스에 위임하도록 선언하여 위임된 클래스가 가지는 인터페이스 메소드를 참조 없이 호출할 수 있도록 생성해주는 기능이다.
interface Fruit를 구현하고 있는 class Apple이 있다면,
Fruit에서 정의하고 있는 Apple의 모든 메소드를 클래스 GreenApple로 위임할 수 있다.
즉, GreenApple은 Apple이 가지는 모든 Fruit의 메소드를 가지며, 이를 클래스 위임(Class delegation)이라고 한다.
interface Fruit {
val name: String
val color: String
fun bite()
}
class Apple: Fruit {
override val name: String
get() = "사과"
override val color: String
get() = "빨간색"
override fun bite() {
print("사과 아삭~ 아삭~")
}
}
// 클래스 위임 : 사용할 기능은 그대로 사용하고 새로 정의할 것만 override로 재정의
class GreenApple(
private val apple: Apple
) : Fruit by apple {
override val color: String
get() = "초록색"
}
|
fun main() {
val greenApple = GreenApple(Apple())
println(greenApple.color)
println(greenApple.name)
greenApple.bite()
}
|