java介面菱形繼承
阿新 • • 發佈:2018-12-26
其實菱形繼承的副作用只是因為公共基類的成員變數
Java的介面可以做出類似菱形繼承的結構,但因為公共基類(介面?)中沒有成員變數,所以沒有二義性問題啦
當然也可以使用內部類(巢狀類)來實現類似多繼承,不必擔心會發生鑽石危機,因為用內部類實現多繼承過程中由設計者重新進行函式命名,從而避免了鑽石危機。下面用程式碼來進行說明:
要繼承的類 Father。
要繼承的類 Mother。
類 Son 同時繼承了 Father 和 Mother 的 output() 方法的實現。
測試結果如下:
father
mother
Java的介面可以做出類似菱形繼承的結構,但因為公共基類(介面?)中沒有成員變數,所以沒有二義性問題啦
當然也可以使用內部類(巢狀類)來實現類似多繼承,不必擔心會發生鑽石危機,因為用內部類實現多繼承過程中由設計者重新進行函式命名,從而避免了鑽石危機。下面用程式碼來進行說明:
要繼承的類 Father。
public class Father {
public void output() {
System.out.println("father");
}
}
要繼承的類 Mother。
public class Mother { public void output() { System.out.println("mother"); } }
類 Son 同時繼承了 Father 和 Mother 的 output() 方法的實現。
public class Son { class Father_son extends Father { } class Mother_son extends Mother { } public void father() { (new Father_son()).output(); } public void mother() { (new Mother_son()).output(); } } 測試類 MainTest。 public class MainTest { public static void main(String[] args) { Son test = new Son(); test.father(); test.mother(); } }
測試結果如下:
father
mother