【Kotlin 入門指南】系列文章目錄:https://bit.ly/3t8awwL
Kotlin 線上課程教學影片:https://bit.ly/3qJ5a5Q
在 Kotlin 中,類別有一個「init」主構造函數和一個或多個「constructor」次構造函數。
class MyClass(val arg1: String, var arg2: Int) {
// 在類頭中定義了主構造函數,arg1 和 arg2 都是主構造函數的參數
// 主構造函數可以直接在類頭中初始化成員變量
val myProperty = "HKT線上教室"
init {
// init 程式區塊會在主構造函數執行時被調用
// 在 init 程式區塊中可以執行一些額外的初始化操作,例如驗證輸入參數等
}
}
在這個範例中, arg1
和 arg2
是主構造函數的參數,可以直接在類頭中進行初始化。同時,我們還可以使用 init
區塊來執行主構造函數中的額外初始化操作。
次要構造函數提供了額外的初始化選項,讓我們可以使用不同的參數組合來初始化類別。
class MyClass(val arg1: String, var arg2: Int) {
constructor(arg1: String) : this(arg1, 0) {
// 這是一個次構造函數,接收一個字符串參數,將 arg2 初始化為 0
}
constructor(arg1: String, arg2: Int, arg3: Boolean) : this(arg1, arg2) {
// 這是另一個次構造函數,接收三個參數,並調用主構造函數進行初始化
// 在這個構造函數中可以進行一些額外的初始化操作
}
}
通過這樣的方式,你可以根據不同的需求和參數組合來初始化類的實例,使得程式碼更具彈性。
class Account {
//戶名
var name: String = ""
init {
println("初始化,第一層")
}
constructor() {
println("初始化,第二層")
}
}
fun main() {
//實體化
val account = Account()
account.name = "HKT"
println(account.name)
}
初始化,第一層
初始化,第二層
HKT
當實體化一個 Account
物件時,程式會先執行主構造函數中的初始化(這裡是 init
區塊),接著才會執行次要構造函數的初始化。這就是為什麼在輸出結果中先看到「初始化,第一層」,然後才是「初始化,第二層」的原因。
這樣的流程確保了在建立物件時,先進行必要的初始化操作,再根據需要進行額外的初始化。