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()
}
运行结果:
第一个按钮点击后

第二个按钮点击后

三,例子:
代码:
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()
}
运行结果:
第一个按钮点击:
![]()
第二个按钮点击:
![]()
浙公网安备 33010602011771号