【從零開始學 Dart 程式設計】繼承

【從零開始學 Dart 程式設計】線上教學課程目錄 ,Flutter 先修班, Dart 程式語言基礎入門課程。

繼承

繼承,在人類的世界當中簡單的定義是父親或家族之前打拼下來的江山,傳給下一代。下一代的兒女、子孫,將繼承擁有上一代的財產或事業。在程式當中可以定義一個子類別透過關鍵字 extends 來繼承父類別所定義屬性欄位、方法等功能。如果父類別有不符合的功能卻想要用同樣的方法名稱,可以完全覆寫父類別的方法。

繼承語法

透過 extends 關鍵字繼承父類別,子類別將會擁有父類別中的屬性與方法。
class  父類別名稱{
    // todo sth...
}

class 子類別名稱 extends 父類別名稱{
    // todo sth...
}

繼承種類

範例

//父類別
class Animal{
    int weight;//體重
    int age;//年齡
    
    //移動
    void move(){
         // todo sth...
    } 
}
//子類別
class Dog extends Animal{
     // todo sth...
}

//子類別
class Bird extends Animal{
    void fly(){
    
    }
}
父類別,有點像公版或是一個很底層的基礎建設,大家都用的到,可以將共用的提出來放在父類別上,不用各自子類別又重覆定義,寫相同的程式碼。以此範例,我們先定義一個 Animal 動物的父類別,父類別有體重和年齡的屬性欄位,還有一個移動的方法。當子類別繼承此父類別,將擁有這些屬性欄位和方法。而各自子類別,可以再根據當下的功能需求,各自定義自己的功能。
再舉一例,如果你覺得 Java 原生的按鈕很難用,你可以繼承原本按鈕的功能外,可以在為自己或客戶打造更好用的按鈕。

super 和 this

super 關鍵字:透過 super 關鍵字來存取父類別屬性欄位或呼叫父類別方法。
this 關鍵字:透過 this 關鍵字,指定為自己的屬性欄位或自己的方法。

範例:

class Animal {
  void eat() {
    print("Animal : eat");
  }
}

class Dog extends Animal {
  void eat() {
    print("Dog : eat");
  }

  void eatTest() {
    this.eat(); // this 呼叫自己的方法
    super.eat(); // super 呼叫父類別的方法
  }
}

void main() {
  Animal animal = new Animal();
  animal.eat();

  Dog dog = new Dog();
  dog.eatTest();
}
輸出結果
Animal : eat
Dog : eat
Animal : eat

多層初始化

我們在「類別」一節中,了解到,當我們將類別實體化成物件時,會進行構造方法初始化的動作。而如果是多層繼承,初始化順序,當然是從父親先初始化在繼續往下子類別延續下去初始化。

範例:

class A{
    A(){
        print("執行A構造方法...");
    }
}
class B extends A{
    B(){
        print("執行B構造方法...");
    }
}
class C extends B{
    C(){
        print("執行C構造方法...");
    }
}

void main() {
        C c = new C();
}
執行結果:
執行A構造方法...
執行B構造方法...
執行C構造方法...

那這次的課程就介紹到這邊囉~
順帶一提,KT 線上教室,臉書粉絲團,會不定期發佈相關資訊,不想錯過最新資訊,不要忘記來按讚,加追蹤喔!也歡迎大家將這套課程分享給更多人喔。
我們下次再見囉!!!掰掰~

留言

這個網誌中的熱門文章

16天記下7000單字

Costco 好市多 AFTERSHOKZ 骨傳導 藍牙運動耳機 AS650 開箱實測評價與心得

2019 最新入門零基礎【從零開始學 Java 程式設計】線上教學課程目錄 (7/5 更新囉~)