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)