Widziałem wiele przykładów, które ilustrują niebezpieczeństwa wielokrotnego dziedziczenia.Dlaczego diament śmierci, a nie trójkąt śmierci
Przykładem jest jak zwykle klas B i C obejmuje Klasy A, D obejmuje zarówno B i C
B i C, jak zastąpić metodę z A, powiedzmy na przykład, równa();
następnie po wywołaniu D.equals(); nie wiemy, który z jego rodzic powinien być nazywany
pod warunkiem, że jest równy() nie jest uwzględniana w D.
Z tego co widzę, nie jest klasa A w tym przypadku zbędny? Jeśli usuniemy A z tej hierarchii i po prostu spojrzymy na B i C, jeśli oba B i C mają metodę zwaną equals(), to kiedy D rozszerzy B i C, to nadal będzie miał ten sam problem, więc czy tak naprawdę nie jest to trójkąt śmierci?
Nie jestem pewien, czy to, co zakładałem, spowoduje błąd czasu kompilacji w innym języku.
Mam nadzieję, że ktoś może to dla mnie wyjaśnić.
Czy to nie byłoby "V of Death"? – Craig
Myślę, że to pytanie związane z projektem jest lepiej dostosowane do http://programmers.stackexchange.com/. –
Myślę, że "diament" po prostu ilustruje, że zarówno klasa B, jak i C rozszerzają klasę A, nawet jeśli sama A nie powoduje żadnych problemów. – Janman