首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

合成與繼承的結合應用:PlaceSetting 綜合範例

     編輯:Java 相關知識

同時運用兩大技術建構複雜類別

實務上常需結合合成與繼承。下例展示如何同時採用兩者,並完成必要的建構子初始化串聯。

//: PlaceSetting.java
class Plate { Plate(int i) { System.out.println("Plate constructor"); } }
class DinnerPlate extends Plate { DinnerPlate(int i) { super(i); System.out.println("DinnerPlate constructor"); } }
class Utensil { Utensil(int i) { System.out.println("Utensil constructor"); } }
class Spoon extends Utensil { Spoon(int i) { super(i); System.out.println("Spoon constructor"); } }
class Fork extends Utensil { Fork(int i) { super(i); System.out.println("Fork constructor"); } }
class Knife extends Utensil { Knife(int i) { super(i); System.out.println("Knife constructor"); } }
class Custom { Custom(int i) { System.out.println("Custom constructor"); } }

public class PlaceSetting extends Custom {
    Spoon sp; Fork frk; Knife kn; DinnerPlate pl;
    PlaceSetting(int i) {
        super(i+1);
        sp = new Spoon(i+2);
        frk = new Fork(i+3);
        kn = new Knife(i+4);
        pl = new DinnerPlate(i+5);
        System.out.println("PlaceSetting constructor");
    }
    public static void main(String[] args) { PlaceSetting x = new PlaceSetting(9); }
} ///:~

重要提醒

編譯器強制要求在建構子最開頭初始化基底類別(透過 super()),但不會檢查成員物件是否正確初始化。開發者必須自行確保每個合成成員皆在建構子中妥善建立,否則將留下難以發現的臭蟲。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved