科特林的继承

时间:2016-11-13 16:54:10

标签: oop inheritance kotlin

最后几天试着和Kotlin一起弄清楚,已经阅读了文档并找到了一个例子。在article

的底部
interface A {
    fun foo() { print("A") }
    fun bar()
}

interface B {
    fun foo() { print("B") }
    fun bar() { print("bar") }
}

class C : A {
    override fun bar() { print("bar") }
}

class D : A, B {
    override fun foo() {
        super<A>.foo()
        super<B>.foo()
    }
}
  

现在,如果我们从A派生出一个具体的类C,我们显然必须覆盖bar()并提供一个实现。如果我们从A和B派生D,我们不必覆盖bar(),因为我们只继承了它的一个实现。

我试过这样做,但IDE强调我必须覆盖A类中的bar()函数,因为D类继承了bar()的多个接口方法

更新:Kotlin issue-tracker.

1 个答案:

答案 0 :(得分:0)

该文章似乎有错误。由于D继承自AB,两者都具有bar()方法的接口,因此必须定义这两种实现。