1. 程式人生 > >java介面菱形繼承

java介面菱形繼承

其實菱形繼承的副作用只是因為公共基類的成員變數
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