【Kotlin 入門指南】繼承 (Inheritance)

更新於 發佈於 閱讀時間約 6 分鐘
【Kotlin 入門指南】系列文章目錄:https://bit.ly/3t8awwL
Kotlin 線上課程教學影片:https://bit.ly/3qJ5a5Q

繼承

繼承是物件導向程式設計中一個重要的概念,它允許你建立一個新的類別,這個類別可以繼承另一個已存在的類別的特性和行為。在 Kotlin 程式語言中,繼承可以幫助你建立出更具結構化和可維護性的程式碼。

繼承基本用法範例

在 Kotlin 程式語言中,使用 : 符號來表示一個類別繼承自另一個類別。語法如下:

// 定義父類別(基礎類別)
open class 父類別名稱 {
// 屬性與函數
}

// 定義子類別(衍生類別),並繼承父類別
class 子類別名稱 : 父類別名稱() {
// 子類別特有的屬性與函數
}

在這個範例中,子類別名稱 會繼承 父類別名稱 的屬性與函數。使用 open 關鍵字來聲明父類別,表示這個類別可以被繼承。預設一般類別 class 都是關閉的,需特別在 class 前方加入 open 關鍵修飾詞,才能讓其他類別繼承。而類別中的屬性與方法也是,需特別在前方加入 open 關鍵字,才能讓繼承的子類別覆寫。否成編譯會報錯誤。

方法覆寫範例

子類別可以覆寫父類別中的函數,以提供自己的實現邏輯。在父類別的函數前加上 open,並在子類別中使用 override 來重新實現該函數。

//父類別
open class SuperClass{
open val myName = "HKT"
open fun myFun() {
println("MyPClass")
}
}

//子類別
class SubClass() : SuperClass() {
override val myName = "Hello"
override fun myFun() {
println("SubClass")
}
}

fun main() {
println(SubClass().myName)//Hello
SubClass().myFun()//SubClass
}

在這個範例中,SuperClass 是一個開放的類別,可以被其他類別繼承。它包含了一個名為 myName 的屬性以及一個名為 myFun() 的函數,並且這兩者皆使用了 open 關鍵字。這表示其他子類別可以覆寫(override)這個類別的屬性和函數,修改其功能或特性。

接著定義SubClass 繼承 SuperClass 的子類別,並且我們在這裡覆寫了 myName 屬性和 myFun() 函數。在 SubClass 中,myName 的值被改寫為 "Hello",而 myFun() 函數印出 "SubClass"

main() 函數中,我們創建了 SubClass 的實例,並分別使用 println(SubClass().myName)SubClass().myFun() 來印出屬性 myName 的值和執行 myFun() 函數。

protected 範例

若想要保護特定的屬性或方法,可以在它們前面加上「protected」關鍵字,這樣僅限繼承的子類別才能存取到這些內容。

//父類別
open class SuperClass{
protected open val myName = "HKT"
protected open fun myFun() {
println("MyPClass")
}
}

//子類別
class SubClass() : SuperClass() {
public override val myName = "Hello"
public override fun myFun() {
println("SubClass")
}
}

fun main() {
println(SuperClass().myName)//錯誤
SuperClass().myFun()//錯誤
}

在這範例中,在 main() 函數中,我們創建了 SubClass 的實例,並分別使用 println(SubClass().myName)SubClass().myFun() 來嘗試存取印出屬性 myName 的值和執行 myFun() 函數,但因為在SuperClass 中被 protected 起來,所以直接呼叫會發生不錯誤。

當屬性或函數被標記為 protected 時,它們僅能在宣告它們的類別或其子類別中使用,而無法在其他地方直接存取。所以 SubClass中,可以覆寫 SuperClass 的屬性與函數,因為他是子類別他繼承了 SuperClass

留言
avatar-img
留言分享你的想法!
avatar-img
HKT實驗室
24會員
261內容數
哈囉!歡迎光臨我的沙龍!我是 KT,一位對應用程式開發充滿熱情的開發者。在這個專屬空間,我將與您分享我在應用開發領域的深入學習心得和豐富的實戰經驗。如果您對應用程式開發技術同樣充滿好奇,渴望不斷探索新知,歡迎成為我們的會員,一起在應用程式開發的旅途上,探索更深層次的技術世界,享受學習的樂趣。
HKT實驗室的其他內容
2023/12/15
本文介紹 Kotlin 中的延遲初始化(lateinit)和懶加載(lazy)的使用方法,以及它們之間的差異。這些關鍵字能夠提升程式效能並簡化程式碼撰寫。
Thumbnail
2023/12/15
本文介紹 Kotlin 中的延遲初始化(lateinit)和懶加載(lazy)的使用方法,以及它們之間的差異。這些關鍵字能夠提升程式效能並簡化程式碼撰寫。
Thumbnail
2023/12/11
空值例外是開發中一個常見的風險,特別是在 Kotlin 和 Java 這樣的跨平台開發中更容易出現。藉由合理地運用 Kotlin 的空值安全機制以及對 Java 程式碼的註解,可以有效地降低程式錯誤的風險,提高程式碼的可靠性和穩定性。
Thumbnail
2023/12/11
空值例外是開發中一個常見的風險,特別是在 Kotlin 和 Java 這樣的跨平台開發中更容易出現。藉由合理地運用 Kotlin 的空值安全機制以及對 Java 程式碼的註解,可以有效地降低程式錯誤的風險,提高程式碼的可靠性和穩定性。
Thumbnail
2023/12/11
在 IntelliJ IDEA 建立 Kotlin 專案時,要執行 Java 程式只需將其檔案命名為 .java,並放置在專案的 java 目錄中。這樣就可以順利執行該 Java 程式。
Thumbnail
2023/12/11
在 IntelliJ IDEA 建立 Kotlin 專案時,要執行 Java 程式只需將其檔案命名為 .java,並放置在專案的 java 目錄中。這樣就可以順利執行該 Java 程式。
Thumbnail
看更多
你可能也想看
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
本章節的目的是介紹 Kotlin 中的物件導向概念。這包括了類別、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型以及反射等概念。每一個概念都會透過範例程式碼來解釋其功能和用法。
Thumbnail
本章節的目的是介紹 Kotlin 中的物件導向概念。這包括了類別、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型以及反射等概念。每一個概念都會透過範例程式碼來解釋其功能和用法。
Thumbnail
Kotlin 的函式可以作為參數使用,它們被歸類為一種資料型別,稱為「Function Types」。當 Java 呼叫這種型別的 Kotlin 函式時,會使用 invoke 關鍵字進行呼叫。通過反編譯程式碼,可以得知 Kotlin 中的 Function Types 資訊。
Thumbnail
Kotlin 的函式可以作為參數使用,它們被歸類為一種資料型別,稱為「Function Types」。當 Java 呼叫這種型別的 Kotlin 函式時,會使用 invoke 關鍵字進行呼叫。通過反編譯程式碼,可以得知 Kotlin 中的 Function Types 資訊。
Thumbnail
在 Kotlin 程式語言中,資料類別 (Data classes) ,它讓你能夠輕鬆地建立和定義只用來儲存資料的類別,讓程式碼更簡潔、更容易閱讀。資料類別的主要目的是暫時保存資料,而不是處理邏輯行為。
Thumbnail
在 Kotlin 程式語言中,資料類別 (Data classes) ,它讓你能夠輕鬆地建立和定義只用來儲存資料的類別,讓程式碼更簡潔、更容易閱讀。資料類別的主要目的是暫時保存資料,而不是處理邏輯行為。
Thumbnail
在 Kotlin 程式語言中,使用關鍵字「interface」來定義介面。在介面中,每個函數預設都是開放的,不需要額外使用「open」關鍵字來宣告。但是,如果你要實作介面中的屬性與函數,就需要使用「override」關鍵字。 介面只定義了方法的名稱、參數和返回值,沒有方法的具體實現。
Thumbnail
在 Kotlin 程式語言中,使用關鍵字「interface」來定義介面。在介面中,每個函數預設都是開放的,不需要額外使用「open」關鍵字來宣告。但是,如果你要實作介面中的屬性與函數,就需要使用「override」關鍵字。 介面只定義了方法的名稱、參數和返回值,沒有方法的具體實現。
Thumbnail
當今天某個類別,比如說 String,在不能直接修改其程式碼或無法繼承使用的情況下,你可以運用 Kotlin 的擴展功能,來擴展該類別的功能。它允許你擴展現有的類別,而不需修改其原始碼。這使得你能夠向任何類別添加新的功能,讓程式碼更具靈活性。
Thumbnail
當今天某個類別,比如說 String,在不能直接修改其程式碼或無法繼承使用的情況下,你可以運用 Kotlin 的擴展功能,來擴展該類別的功能。它允許你擴展現有的類別,而不需修改其原始碼。這使得你能夠向任何類別添加新的功能,讓程式碼更具靈活性。
Thumbnail
本指南介紹了 Kotlin 中類別的主構造函數和次要構造函數的使用方法,並提供了相應的程式碼範例和初始化順序說明。
Thumbnail
本指南介紹了 Kotlin 中類別的主構造函數和次要構造函數的使用方法,並提供了相應的程式碼範例和初始化順序說明。
Thumbnail
在 Kotlin 程式語言中,使用 fun 關鍵字來定義函數,定義一個有返回值的函數。
Thumbnail
在 Kotlin 程式語言中,使用 fun 關鍵字來定義函數,定義一個有返回值的函數。
Thumbnail
Kotlin 的字串資料類型代表文字的資料型別,使用雙引號括起來。此外,Kotlin 還支援字串模板,讓在字串中插入變數和表達式更加容易。 除此之外,Kotlin 還提供了許多內建的字串函數,像是 substring() 和 replace(),幫助更輕鬆地處理和操作字串。
Thumbnail
Kotlin 的字串資料類型代表文字的資料型別,使用雙引號括起來。此外,Kotlin 還支援字串模板,讓在字串中插入變數和表達式更加容易。 除此之外,Kotlin 還提供了許多內建的字串函數,像是 substring() 和 replace(),幫助更輕鬆地處理和操作字串。
Thumbnail
以下會舉一個簡單的生活例子 (Inherit 繼承) 以顯示出Inheritance 的基本用法, 以下供各位參考: 相關頁面: C#繼承 – Inheritance 繼承 的基本用法 – 加入 for loop, if, Array, Collection的例子
Thumbnail
以下會舉一個簡單的生活例子 (Inherit 繼承) 以顯示出Inheritance 的基本用法, 以下供各位參考: 相關頁面: C#繼承 – Inheritance 繼承 的基本用法 – 加入 for loop, if, Array, Collection的例子
Thumbnail
繼承是智能合約開發很常見也很重要的一種方法,繼承主要是子合約可以從父合約中繼承所有的屬性和方法。 繼承寫法很簡單,就是在子合約後面加入"is"父合約的名稱就可以了
Thumbnail
繼承是智能合約開發很常見也很重要的一種方法,繼承主要是子合約可以從父合約中繼承所有的屬性和方法。 繼承寫法很簡單,就是在子合約後面加入"is"父合約的名稱就可以了
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News