
- Kotlin 教程
- Kotlin - 首頁
- Kotlin - 概述
- Kotlin - 環境搭建
- Kotlin - 架構
- Kotlin - 基本語法
- Kotlin - 註釋
- Kotlin - 關鍵字
- Kotlin - 變數
- Kotlin - 資料型別
- Kotlin - 運算子
- Kotlin - 布林值
- Kotlin - 字串
- Kotlin - 陣列
- Kotlin - 範圍
- Kotlin - 函式
- Kotlin 控制流
- Kotlin - 控制流
- Kotlin - if...Else 表示式
- Kotlin - When 表示式
- Kotlin - For 迴圈
- Kotlin - While 迴圈
- Kotlin - Break 和 Continue
- Kotlin 集合
- Kotlin - 集合
- Kotlin - 列表
- Kotlin - 集合
- Kotlin - 對映
- Kotlin 物件和類
- Kotlin - 類和物件
- Kotlin - 建構函式
- Kotlin - 繼承
- Kotlin - 抽象類
- Kotlin - 介面
- Kotlin - 可見性控制
- Kotlin - 擴充套件
- Kotlin - 資料類
- Kotlin - 密封類
- Kotlin - 泛型
- Kotlin - 委託
- Kotlin - 解構宣告
- Kotlin - 異常處理
- Kotlin 有用資源
- Kotlin - 快速指南
- Kotlin - 有用資源
- Kotlin - 討論
Kotlin - 建構函式
Kotlin 建構函式是類中一個特殊的成員函式,在例項化物件時會被呼叫。每當建立物件時,都會自動呼叫定義的建構函式,用於初始化類的屬性。
每個 Kotlin 類都需要有一個建構函式,如果我們沒有定義它,則編譯器會生成一個預設建構函式。
Kotlin 類可以有以下兩種型別的建構函式
主建構函式
次建構函式
Kotlin 類可以有一個主建構函式和一個或多個附加的次建構函式。Kotlin 主建構函式初始化類,而次建構函式有助於在初始化類時包含一些額外的邏輯。
Kotlin 主建構函式
主建構函式可以在類頭級別宣告,如下例所示。
class Person constructor(val firstName: String, val age: Int) { // class body }
如果未指定任何註釋或訪問修飾符(如 public、private 或 protected),則可以省略constructor關鍵字。
class Person (val firstName: String, val age: Int) { // class body }
在本例中,我們透過val關鍵字聲明瞭屬性以使其成為只讀的。如果需要稍後更改這些屬性的值,則可以使用關鍵字var定義它們。
初始化塊
主建構函式不能包含任何程式碼。初始化程式碼可以放置在以init關鍵字為字首的初始化塊中。可以有多個init塊,在例項初始化期間,初始化塊按其在類體中出現的順序執行,與屬性初始化器交錯。
以下是一個使用初始化塊的示例
class Person (val _name: String, val _age: Int) { // Member Variables var name: String var age: Int // Initializer Block init { this.name = _name this.age = _age println("Name = $name") println("Age = $age") } } fun main(args: Array<String>) { val person = Person("Zara", 20) }
執行上述 Kotlin 程式時,將生成以下輸出
Name = Zara Age = 20
預設值
Kotlin 允許使用一些預設值初始化建構函式引數。以下是同一個的工作示例
class Person (val _name: String, val _age: Int=20) { // Member Variables var name: String var age: Int // Initializer Block init { this.name = _name this.age = _age println("Name = $name") println("Age = $age") } } fun main(args: Array<String>) { val zara = Person("Zara") val nuha = Person("Nuha", 11) }
執行上述 Kotlin 程式時,將生成以下輸出
Name = Zara Age = 20 Name = Nuha Age = 11
Kotlin 次建構函式
如前所述,Kotlin 允許為您的類建立一個或多個次建構函式。此次建構函式是使用constructor關鍵字建立的。當您想要在 Kotlin 中建立多個建構函式時,或者當您想要在主建構函式中包含更多邏輯但無法做到這一點時(因為主建構函式可能被其他類呼叫),則需要使用此建構函式。
示例
檢視以下示例,我們在這裡建立了一個次建構函式來再次實現上述示例
class Person{ // Member Variables var name: String var age: Int // Initializer Block init { println("Initializer Block") } // Secondary Constructor constructor ( _name: String, _age: Int) { this.name = _name this.age = _age println("Name = $name") println("Age = $age") } } fun main(args: Array<String>) { val zara = Person("Zara", 20) }
執行上述 Kotlin 程式時,將生成以下輸出
Initializer Block Name = Zara Age = 20
次建構函式不允許在次建構函式引數中使用val或var。現在讓我們來看一個有兩個次建構函式的示例
class Person{ // Member Variables var name: String var age: Int var salary:Double // First Secondary Constructor constructor ( _name: String, _age: Int) { this.name = _name this.age = _age this.salary = 0.00 println("Name = $name") println("Age = $age") } // Second Secondary Constructor constructor ( _name: String, _age: Int, _salary: Double) { this.name = _name this.age = _age this.salary = _salary println("Name = $name") println("Age = $age") println("Salary = $salary") } } fun main(args: Array<String>) { val nuha = Person("Nuha", 12) val zara = Person("Zara", 20, 2000.00) }
執行上述 Kotlin 程式時,將生成以下輸出
Name = Nuha Age = 12 Name = Zara Age = 20 Salary = 2000.0
測驗時間 (面試和考試準備)
答案:B
解釋
儘管如果未指定任何註釋或訪問修飾符,則可以省略constructor關鍵字。