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

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

這個網誌中的熱門文章

nano 文字編輯器

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

16天記下7000單字

Android Studio 歷代版本下載點

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