【发布时间】:2017-12-04 23:15:02
【问题描述】:
在下面的精简示例中,您能否解释为什么 Kotlin 编译器在覆盖我们进一步限制其类型时会抱怨(编译器消息:Var-property type is 'B', which is not a type of overriden public abstract var a: A)
interface A
interface B : A {
fun someFunc():Boolean
}
class C : B {
override fun someFunc(): Boolean {
return true
}
}
abstract class D {
abstract var a: A
}
class E : D() {
override var a : B = C()
fun otherFunc() {
println(a.someFunc())
}
}
此外,编译器不会抱怨以下 sn-p:
open class G
class H : G()
abstract class F {
abstract val g: G
}
class I : F() {
override var g : H = H()
}
所以我猜想接口继承发生了一些事情,而类则没有。
【问题讨论】:
标签: inheritance interface kotlin