【发布时间】:2022-10-01 07:27:24
【问题描述】:
我试图拥有一个接口的两个实现,其中一个从另一个实现继承默认值,但覆盖了一个。
这是一个显示该行为的示例:
fun main() {
println(Bottom.value) // prints: bottom
println(Bottom.determineValue()) // prints: middle
}
interface Top {
val value: String
val otherValue: String
fun determineValue() = value
}
object Middle : Top {
override val value = \"middle\"
override val otherValue = \"something else\"
}
object Bottom : Top by Middle {
override val value = \"bottom\"
}
我遇到了意想不到的行为,当属性value 在Bottom 实现之外使用时,它会从Middle 而不是Bottom 返回值。
如果有人对为什么会发生这种情况有更深入的了解,我将不胜感激任何解释
标签: kotlin