美文网首页
【runoob.14】伴生对象

【runoob.14】伴生对象

作者: 十旋转45度 | 来源:发表于2017-09-29 16:42 被阅读0次

    伴生对象

    类内部的对象声明可以用 companion 关键字标记,这样它就与外部类关联在一起,我们就可以直接通过外部类访问到对象的内部元素。

    class MyClass {
        companion object Factory {
            fun create(): MyClass = MyClass()
        }
    }
    
    val instance = MyClass.create()   // 访问到对象的内部元素
    

    我们可以省略掉该对象的对象名,然后使用 Companion 替代需要声明的对象名:

    class MyClass {
        companion object {
        }
    }
    

    val x = MyClass.Companion
    注意:一个类里面只能声明一个内部关联对象,即关键字 companion 只能使用一次。


    伴生对象的扩展

    如果一个类定义有一个伴生对象 ,你也可以为伴生对象定义扩展函数和属性。
    伴生对象通过"类名."形式调用伴生对象,伴生对象声明的扩展函数,通过用类名限定符来调用:

    class MyClass {
        companion object { }  // 将被称为 "Companion"
    }
    
    fun MyClass.Companion.foo() {
        println("伴随对象的扩展函数")
    }
    
    val MyClass.Companion.no: Int
        get() = 10
    
    fun main(args: Array<String>) {
        println("no:${MyClass.no}")
        MyClass.foo()
    }
    

    实例执行输出结果为:

    no:10
    伴随对象的扩展函数
    

    相关文章

      网友评论

          本文标题:【runoob.14】伴生对象

          本文链接:https://www.haomeiwen.com/subject/xggiextx.html