【发布时间】:2018-09-23 11:03:22
【问题描述】:
我正在阅读 Kotlin in Action 这本书并试图更好地理解伴随对象,除了从接口/抽象类添加方法实现之外,伴随对象还有其他用途吗?
我遇到了一种实例化对象的方法,该方法仅在类是抽象类时才有效:
fun main(args: Array<String>) {
Fruit.showColor()
}
class Fruit(val name: String) {
companion object : Apple()
}
abstract class Apple {
fun showColor(){
print("I am an apple")
};
}
【问题讨论】:
-
不,如果类不是抽象的,您的示例就可以正常工作。它需要打开(并且抽象类会自动打开),但这与伴随对象无关。
-
好点,是的,让课程开放也可以,但为什么不定期关闭课程呢? :)
-
因为你正在扩展它。这就是开放类的意思:你可以扩展它。
-
我了解开放类的含义,并且我们可以在伴随对象中添加多个接口,但仍然没有找到此功能的更广泛用途...