개발 언어/코틀린
코틀린(Kotlin) | 클래스 위임
jjiiiinn
2019. 6. 24. 15:37
728x90
상속의 문제점
- 상위 클래스와 하위 클래스의 결합도가 높아져 상위 클래스의 변화가 하위 클래스에 주는 영향을 예측하기 어렵다.
- 불필요한 상위 클래스의 메서드까지 구현해야 한다.
- 하위 클래스로 내려갈수록 기능이 더해져 파악하기 어렵다.
- final클래스의 경우 상속이 불가능하다.
상속의 대안 위임
- 특정 처리를 다른 객체에게 넘기는 것을 의미한다.
- 다른 객체는 클래스 내부(포함)에 가지고 있는다.
- 코틀린 에서는 by키워드로 클래스 위임을 만들 수 있다.
interface Attackable {
fun attack()
}
class Knife: Attackable {
override fun attack() {
println("attack with knife")
}
}
class Gun: Attackable {
override fun attack() {
println("attack with gun")
}
}
class Attacker(private val impl: Attackable): Attackable by impl
fun main() {
val attackerWithKnife = Attacker(Knife())
attackerWithKnife.attack() // attack with knife
val attackerWithFun = Attacker(Gun())
attackerWithFun.attack() // attack with gun
}
출처
728x90