0

我正在阅读 Kotlin in Action 一书并试图更好地理解 Companion Objects,除了从接口/抽象类添加方法实现之外,Companion Ojbects 还有其他用途吗?

我遇到了一种实例化对象的方法,该对象仅在类是抽象的情况下才有效:

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")
    };
}
4

1 回答 1

2

我对伴侣对象的心智模型是对安全单例的语言级支持。即,您可以在 Singleton 伴随对象上提供那些相关的方法,而不是类上的工厂或 Util 方法的静态方法。

Companion 状态为您提供了许多类似于具有静态方法的 java 类的默认作用域胜利。

您的示例似乎无效,因为为什么水果“单例”是苹果?

于 2018-09-23T11:35:57.023 回答