Kotlin 類別定義 (Class)
Kotlin 的類別定義非常簡潔。
定義類別
class Person { /* ... */ }
如果沒有內容,連大括號都可以省掉:
class Empty
建構函式 (Constructor)
這是與 Java 差別最大的地方。Kotlin 有 Primary Constructor (主建構子) 和 Secondary Constructor (次建構子)。
Primary Constructor
直接寫在類別名稱後面。這是最推薦的寫法。
// 定義類別同時定義屬性 (val name)
class Person(val name: String, var age: Int)
fun main() {
val p = Person("Miko", 18)
println(p.name)
}
看到那個 val 了嗎?它自動幫你宣告了屬性、並在建構時賦值。一行抵 Java 十行。
初始化區塊 (init)
如果你在建構時需要執行一些邏輯 (例如驗證資料),可以寫在 init 區塊。
class Person(val name: String, var age: Int) {
init {
println("User $name created!")
if (age < 0) age = 0
}
}
}
}
Secondary Constructor
如果需要多種建構方式,可以使用 constructor 關鍵字。
但注意:如果有定義 Primary Constructor,Secondary Constructor 必須呼叫它 (this(...))。
class Person(val name: String) {
var age: Int = 0
constructor(name: String, age: Int) : this(name) {
this.age = age
}
}
建立物件
Kotlin 建立物件 不需要 new 關鍵字!
val p = Person("Miko", 18)