代码之家  ›  专栏  ›  技术社区  ›  David Aleksanyan

Kotlin伴生对象是否只是从接口添加函数的一种方法?

  •  0
  • David Aleksanyan  · 技术社区  · 6 年前

    我正在阅读《行动手册》中的Kotlin,并试图更好地理解伴生对象,除了从接口/抽象类添加方法实现之外,伴生OjBect还有其他用途吗?

    我遇到了一种实例化对象的方法,这种方法只有在类是抽象的时候才有效:

    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")
        };
    }
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Yuri Schimke    6 年前

    我的同伴对象的心理模型是对安全单例的语言级支持。也就是说,您可以在singleton伴生对象上提供那些相关的方法,而不是factory或util方法类上的静态方法。

    该伙伴状态为您提供了许多与静态方法类似的Java类的默认作用域胜。

    你的例子似乎是无效的,因为为什么水果“单核”是一个苹果?