2021年7月13日 星期二

JAVA 物件導向的概念-14 多型的練習

   上一篇練習的多型,其承接物件時是使用父類別所宣告的物件,這次嚐試用介面所宣告的物件來承接。

  英雄與惡棍都會被世界所記錄,死後也都有葬禮,但方式都不同,所以我抽出記錄與葬禮各自寫成介面。

記錄介面:

// 記錄的介面
public interface Record {
void recordWay();
}

葬禮的介面:

// 葬禮的介面
public interface Burial {
void burialWay();
}

然後再寫出英雄與惡棍的類別,並實作上述兩個介面,而且內容要覆寫介面的方法。

英雄類別:

// 英雄類別
public class Hero implements Burial, Record {

public void burialWay(){
System.out.println("使用國葬!");
}

public void recordWay(){
System.out.println("製造雕像紀念!");
}
}

惡棍類別:

// 惡棍類別
public class Gangster implements Burial, Record {

public void burialWay(){
System.out.println("丟去餵野狗!");
}

public void recordWay(){
System.out.println("寫入罪犯啟示錄中!");
}
}

在主程式中的工作與前一篇相同,

主程式:

// 主程式
public class Main {
    public static void burialDeal(Burial man) {
man.burialWay();
}

public static void recordDeal(Record man) {
man.recordWay();
}
public static void main(String[] args){

Hero ai = new Hero(); // 宣告愛未未是一個英雄物件,並產生她。
Gangster atnans = new Gangster(); // 宣告亞特南斯是一個惡棍物件,並產生他。

System.out.println("英雄愛未未的下場~~");
burialDeal(ai);
recordDeal(ai);

System.out.println();

System.out.println("惡棍亞特南斯的下場~~");
burialDeal(atnans);
recordDeal(atnans);

}

}

結果:

英雄愛未未的下場~~
製造雕像紀念!
使用國葬!

惡棍亞特南斯的下場~~
寫入罪犯啟示錄中!
丟去餵野狗!

Process finished with exit code 0

下個結論~~多型基本上就是模糊化寫法的進階應用!

  上一篇是用方法中宣告的[父類別物件]去承接[子類別物件],這一篇則是用方法中宣告的[介面]去承接[實作該介面的類別產生之物件]。

  物件導向的概念大概就是這樣,實際上我手邊的書還有教巢狀類別、聚合之類的,不過我朋友 Elton 認為那些以後需要再學就好,所以我就果斷跳過了。接下來我要學的就是套件。

  最後說一下,如果你已經到學到這邊,那接下來就請不要放棄,因為接下來就是學用別人的套件,你不需要知道內容原理,只要知道如何用就好了。而這些資源,網路上很多,善用這些資源,你就像是有超能力一樣,可以完成很多事情。簡單說,回報現在才開始。



沒有留言:

張貼留言