kotlin半生對象
伴侶對象 (Companion object)
If you need a function or a property to be tied to a class rather than to instances of it (similar to static in java), you can declare it inside a companion object:
如果需要將函數或屬性綁定到類而不是實例(類似于java中的static),則可以在同伴對象中聲明它:
You can omit the name, in which case the name defaults to Companion,
您可以省略名稱,在這種情況下,名稱默認為Companion,
companion object <Optional Name>{ //Companion Object Body }
Companion objects members can only be accessed via the containing class name, not via instances of the class.
伴侶對象成員只能通過包含的類名稱訪問,而不能通過類的實例訪問。
A class has only one companion object.
一個類只有一個伴隨對象。
Companion object initializes when class is loaded, (typically when first time reference from other code).
伴侶對象在加載類時初始化(通常是在第一次從其他代碼引用時)。
Companion object has its own init block.
伴隨對象具有其自己的init塊。
The companion object is a singleton.
伴隨對象是單例。
Kotlin中的伴隨對象特征程序 (Program for companion object features in Kotlin)
package com.includehelp
//Declare class
class Car{
//class init block
init {
println("Init Block of Class")
}
//Make companion object
companion object {
//companion object init block
init {
println("Init Block of Companion object")
}
//property of companion object
val name="Tata Altroz !! "
//function in companion object
fun printName(){
println("Your Car name : $name")
}
}
}
//Main Function, Entry Point of Program
fun main(){
//Call method with Class name,
//without create Instance of class,
//like static method in java
Car.printName()
//access Property using class name
val nameLen = Car.name.length
println("Car Name Length : $nameLen")
}
Output:
輸出:
Init Block of Companion object
Your Car name : Tata Altroz !!
Car Name Length : 15
翻譯自: https://www.includehelp.com/kotlin/companion-object-features.aspx
kotlin半生對象