2023-12-08|閱讀時間 ‧ 約 4 分鐘

【Kotlin 入門指南】類別初始化使用範例與介紹

【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 程式區塊中可以執行一些額外的初始化操作,例如驗證輸入參數等
}
}

在這個範例中, arg1arg2 是主構造函數的參數,可以直接在類頭中進行初始化。同時,我們還可以使用 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 區塊),接著才會執行次要構造函數的初始化。這就是為什麼在輸出結果中先看到「初始化,第一層」,然後才是「初始化,第二層」的原因。

這樣的流程確保了在建立物件時,先進行必要的初始化操作,再根據需要進行額外的初始化。


分享至
成為作者繼續創作的動力吧!
這份指南以淺顯易懂方式介紹 Kotlin 基礎概念,讓你將能夠快速掌握建立起對 Kotlin 的基本了解,並能將其運用於實際專案中。內容涵蓋基礎語法、資料型態、控制流程、函數、類別、繼承、物件、介面、泛型、委托等主題。無論你想進入 Android 開發領域或探索新語言,這份指南將成為你學習 Kotlin 的理想起點。
© 2024 vocus All rights reserved.