kotlin: companion object/伴生对象

一,功能:

使用 companion object 定义的类中的 伴生对象 , 内部的 成员 和 函数 相当于 静态成员 ;

一个类中只能有一个伴生对象 ;

伴生对象 的 成员函数 和 成员属性 , 可以直接使用类名进行访问 ;

二,例子

代码:

open class OpenStudent {
    companion object {
        var DELTA = 10
        fun delta() {
            DELTA++
            println("delta is $DELTA")
        }
    }

    var name = "Tom"
    var age = 18
        get() {
            field++
            return field
        }
}

调用:

        //处理按钮点击事件
        binding.button5.setOnClickListener {
            val stu1 = OpenStudent()
            println("age:"+stu1.age+";name:"+stu1.name)
            println(OpenStudent.DELTA)
            OpenStudent.delta()
        }

        //处理按钮点击事件
        binding.button6.setOnClickListener {
            val stu1 = OpenStudent()
            println("age:"+stu1.age+";name:"+stu1.name)
            println(OpenStudent.Companion.DELTA)
            OpenStudent.Companion.delta()
        }

运行结果:

第一个按钮点击后

image

第二个按钮点击后

image

三,例子:

代码:

class SingleStudent2 private constructor() {

    /**
     * 伴生对象
     */
    companion object {
        var name = "Tom"
        var age = 18

        private val singleTest by lazy {
            println("init")
            SingleStudent2()
        }
        fun getInstance() = singleTest
    }
    fun sayHello() {
        age++
        println("${name} ${age} years old, say hello.")
    }
}

调用:

        //处理按钮点击事件
        binding.button1.setOnClickListener {
            // 调用单例类
            val sStudent1 = SingleStudent2.getInstance()
            sStudent1.sayHello()
        }

        //处理按钮点击事件
        binding.button2.setOnClickListener {
            // 调用单例类
            val sStudent2 = SingleStudent2.getInstance()
            sStudent2.sayHello()
        }

运行结果:

第一个按钮点击:

image

第二个按钮点击:

image

posted @ 2025-09-06 08:38  刘宏缔的架构森林  阅读(26)  评论(0)    收藏  举报