Kotlin中的伴生對象(Companion Object)和普通對象(Object)之間存在一些關(guān)鍵區(qū)別:
object
關(guān)鍵字定義一個單例對象。object
關(guān)鍵字,它是一個與類相關(guān)聯(lián)的靜態(tài)對象。class MyClass {
companion object {
// 伴生對象的屬性和方法
}
}
object MyObject {
// 普通對象的屬性和方法
}
.
操作符。class MyClass {
companion object {
const val MY_CONST = "Hello, World!"
}
}
println(MyClass.MY_CONST) // 輸出 "Hello, World!"
class MyClass {
companion object {
val myInstance = MyClass()
}
}
val instance1 = MyClass.myInstance
val instance2 = MyClass.myInstance
println(instance1 == instance2) // 輸出 true
class MyClass {
companion object {
@JvmStatic
fun myStaticMethod() {
println("This is a static method.")
}
}
}
MyClass.myStaticMethod() // 輸出 "This is a static method."
總結(jié):Kotlin中的伴生對象與普通對象的主要區(qū)別在于定義方式、作用域和靜態(tài)方法的定義。伴生對象與類相關(guān)聯(lián),可以直接通過類名訪問其屬性和方法,而普通對象在整個項目中都是可見的。