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