Kotlin 教學【從零開始學 Kotlin 程式設計】繼承 Inheritance

【從零開始學 Kotlin 程式設計】
線上教學課程目錄:https://bit.ly/2Kx7GrM
Youtube 課程播放清單:https://bit.ly/3qJ5a5Q

繼承

在 Kotlin 中使用冒號「:」表示繼承關係,格式如下:

繼承

class 子類別名稱 : 父類別名稱() {
    // 子類別的屬性與方法定義
}

預設一般類別 class 都是關閉的,需特別在 class 前方加入 open 關鍵修飾詞,才能讓其他類別繼承。而類別中的屬性與方法也是,需特別在前方加入 open 關鍵字,才能讓繼承的子類別覆寫。否成編譯會報錯誤。

//父類別
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)
    SubClass().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()//錯誤

    println(SubClass().myName)
    SubClass().myFun()
}

子類別繼承父類別

定義一個父類別 Person

open class Person {
    //戶名
    var name: String = ""
    //地址
    var address: String = ""
}

定義一個子類別 Account 並且去繼承 Person 父類別

class Account : Person() {
    //帳號
    var id: String = ""
}

繼承父類別使用範例

fun main() {
    //實體化
    val account = Account()

    account.id = "123456789"
    account.name = “HKT"
    account.address = "台北市信義區信義路五段7號"

    println(account.id)
    println(account.name)
    println(account.address)
}

輸出結果

123456789
HKT
台北市信義區信義路五段7號

繼承後覆寫屬性

父類別中的屬性,若允許子類別繼承後可以覆寫屬性,須在前方加入 open 關鍵修飾詞,否則編譯時會報錯誤。反過來,若不提供子類別覆寫,則不需要加入open 修飾詞。

open class Person {
    //戶名
    open var name: String = ""
}

在子類別中加入 override 關鍵修飾詞,即可以修飾父類別中的屬性

class Account : Person() {
    //覆寫戶名
    override var name: String = ""
}

繼承後覆寫屬性使用範例

fun main() {
    //實體化
    val account = Account()

    account.name = "HKT"

    println(account.name)
}

輸出結果

HKT

繼承後覆寫函數

父類別中的方法,若允許子類別繼承後可以覆寫方法,須在前方加入 open 關鍵修飾詞,否則編譯時會報錯誤。反過來,若不提供子類別覆寫,則不需要加入open 修飾詞。

open class Person {
    open fun showName() {
        println("HKT")
    }
}

在子類別中加入 override 關鍵修飾詞,即可以修飾父類別中的方法

class Account : Person() {
    override fun showName() {
        println("Kitty")
    }
}

繼承後覆寫使用範例

fun main() {
    //實體化
    val account = Account()

    account.showName()
}

輸出結果

Kitty

那這次的課程就介紹到這邊囉~

順帶一提,KT 線上教室,臉書粉絲團,會不定期發佈相關資訊,不想錯過最新資訊,不要忘記來按讚,加追蹤喔!也歡迎大家將這套課程分享給更多人喔。

我們下次再見囉!!!掰掰

這個網誌中的熱門文章

2023 最新入門零基礎 Kotlin教學【從零開始學 Kotlin 程式設計】Kotlin 教學課程目錄 (Android Kotlin, IntelliJ IDEA, Android Studio, Android APP 開發教學)

nano 文字編輯器

2022 最新入門零基礎 Flutter教學 【Flutter 程式設計入門實戰 30 天】Flutter 教學課程目錄 (IntelliJ IDEA 開發教學)

16天記下7000單字

最新入門零基礎 Java 教學【從零開始學 Java 程式設計】Java教學課程目錄 (IntelliJ IDEA 開發教學)