본문 바로가기
Android/안드로이드 스터디(Kotlin)

Kotlin] 28. 다이아몬드 문제

by 김마리님 2020. 12. 10.

 

이 코드를 보면,

 

Father, Mother은 Parent를 상속하고, Child는 인터페이스 두개를 구현(implement)한다.

그렇다면 Child에서 말하는 super은 Mother interface여야 하는가, Father interface여야 하는가. 이것이 다이아몬드 문제이다.

 

잘 보면 super 키워드에 컴파일 오류가 나있다. 즉, 해결법은 super 키워드를 호출할때 어떤 인터페이스를 호출할건지 지정해주면 된다.

 

package diamondQuestion

interface Parent{
    fun follow() : Unit
}

interface Mother : Parent {
    override fun follow() = println("Mother follow")
}

interface Father : Parent {
    override fun follow() = println("Father follow")
}

class Child : Mother, Father {
    override fun follow() {
        println("child")
        super<Mother>.follow()
    }

}

fun Main() {
    Child().follow()
}
반응형

'Android > 안드로이드 스터디(Kotlin)' 카테고리의 다른 글

Kotlin] 30. 데이터 클래스  (0) 2020.12.10
Kotlin] 29. 중첩 클래스  (0) 2020.12.10
Kotlin] 27. lateinit  (0) 2020.12.10
Kotlin] 26. const  (0) 2020.12.10
Kotlin] 25. inline 함수  (0) 2020.12.10