【发布时间】:2016-11-13 16:54:10
【问题描述】:
最近几天试图用 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() 的多个接口方法
【问题讨论】:
-
你在问什么问题?
-
@AndrewOrobator,是文章中的错误还是我做错了什么?
-
文章好像有错误。请参阅下面的答案
-
@AndrewOrobator,我看到了,谢谢回答,希望其他开发者能看到
-
您应该将此作为问题提交到kotl.in/issue,因为编译器不同意官方文档。而且由于您无法与编译器抗争(而且更改速度会更慢),因此最好找出必须以团队可以跟踪或采取行动的方式更改哪个编译器。显然这里有一个需要解决的冲突。
标签: oop inheritance kotlin