美文网首页
【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】伴生对象

    伴生对象 类内部的对象声明可以用 companion 关键字标记,这样它就与外部类关联在一起,我们就可以直接通过外...

  • Scala提取器基础

    apply方法 伴生类和伴生对象的概念,companion class和companion object伴生对象里...

  • scala-08-伴生对象

    基本介绍 1)Scala中伴生对象采用object关键字声明,伴生对象中声明的全是 "静态"内容,可以通过伴生对象...

  • Scala的访问权限控制

    包、类、对象、成员的访问权限: 伴生类、伴生对象的访问权限:

  • 伴生对象

  • 伴生对象

    在一个类中,只允许出现一个伴生对象伴生对象名字MyObject可省略, 那么编译器会生成一个默认名字Compani...

  • 伴生对象和伴生类

    当单例对象和类同名的时候,而且在同一个文件中,互为伴生。这个时候伴生对象和伴生类可以访问彼此的私有成员。 上边代码...

  • kotlin学习日记(3)

    伴生对象 ●伴生对象中的公共函数必须带有 @JvmStatic 注释才能作为静态方法公开。 ●在 companio...

  • object与class

    object: 单例对象相关概念: 伴生对象

  • 如何提高kotlin代码质量

    1.Kotlin的隐藏开销 伴生对象伴生对象通过在类中使用companion object来创建,用来替代静态成员...

网友评论

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

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