2010-09-22 14 views
5

Powiel możliwe:
Why there is no multiple inheritance in Java, but implementing multiple interfaces is alloweddlaczego java nie obsługuje wielokrotnego dziedziczenia

Witam wszystkich, jestem nowy w java i kiedy ja staram się korzystać z wielu koncepcji dziedziczenia w Javie jego pokazywanie błąd kompilacji. Dlaczego java go nie obsługuje. Słyszałem o słowie kluczowym interfejsu, ale nie wiem, dlaczego java obsługuje go bezpośrednio. pomóżcie mi w tym i wyjaśnijcie.

+1

http://stackoverflow.com/questions/995255/why-is-multiple-inheritance-not-allowed-in-java-or-c http://stackoverflow.com/questions/2515477/why- tam-nie-wiele-dziedziczenia-w-java-ale-implementacja-wiele-interfejsu http://stackoverflow.com/questions/3008683/why-does-java-allow-multiple-inestitance- from-interfaces-but -not-from-abstract-co http://stackoverflow.com/questions/1262447/multiple-inheritance-in-java http://stackoverflow.com/questions/1038314/alternative-of-multiple-inheritance-in-java –

Odpowiedz

15

Wielokrotne dziedziczenie może być naprawdę trudne do zrozumienia. Kiedy masz dziedziczenie wielokrotne z dwiema klasami, które mają metody w konfliktach, jak sobie z tym radzisz?

Oczywiście istnieją rozwiązania (na przykład w C++), ale twórcy Javy zdecydowali, że jest to droga do skomplikowania, a nie do filozofii Java (sprawienie, że tworzenie będzie o wiele łatwiejsze).

Od sun.com:

wielokrotne dziedziczenie - a wszystko to generuje problemy - odrzucono z Java. Pożądane cechy wielokrotnego dziedziczenia są dostarczane przez interfejsy - koncepcyjnie podobne do protokołów Objective C.
Interfejs nie jest definicją klasy. Jest to raczej definicja zestawu metod, które będzie implementować jedna lub więcej klas. Ważną kwestią interfejsów jest deklarowanie tylko metod i stałych. Zmienne nie mogą być zdefiniowane w interfejsach.


Zasoby:

1

Ponieważ trudno było z niego korzystać. Zamiast tego Java ma interface, co jest znacznie lepszym rozwiązaniem.

21

Głównym problemem związanym z dziedziczeniem wielokrotnym (o którym wspominały Colin i Rin) znane jest The Diamond Problem.

I przytoczyć:

Problem diament jest niejednoznaczność która powstaje, gdy dwie grupy B i C dziedziczy z A i klasy D dziedziczy zarówno B i C. W przypadku zastosowania metody D wywołuje metodę zdefiniowaną w A (i czy nie przesłania tej metody), a B i C nadpisują tę metodę inaczej, niż z której klasy dziedziczy ona: B lub C?

+1

ładnie wyjaśnione .....+1. –

Powiązane problemy