Jak wirtualne dziedziczenie rozwiązuje problem diamentów?
Jak wirtualne dziedziczenie rozwiązuje problem diamentów?

Wideo: Jak wirtualne dziedziczenie rozwiązuje problem diamentów?

Wideo: Jak wirtualne dziedziczenie rozwiązuje problem diamentów?
Wideo: Hybrid Inheritance in C++ with Diamond Problem and its Resolution | Virtual Inheritance in C++ 2024, Grudzień
Anonim

Wirtualne dziedziczenie rozwiązuje klasyka Diamentowy problem ”. Zapewnia to, że klasa potomna otrzyma tylko jedną instancję wspólnej klasy bazowej. Innymi słowy, klasa Snake Wola mieć tylko jedną instancję klasy LivingThing. Klasy Animal i Reptile dzielą tę instancję.

W związku z tym, na czym polega problem diamentów w dziedziczeniu?

Ten problem z diamentami „jest niejednoznacznością, która może powstać w wyniku dopuszczenia wielokrotności” dziedzictwo . To poważna problem dla języków (takich jak C++), które pozwalają na wiele dziedzictwo państwowy. InJava jednak wiele dziedzictwo nie jest dozwolone dla klas, tylko dla interfejsów, a te nie zawierają stanu.

Następnie pojawia się pytanie, w jaki sposób wirtualna klasa bazowa pomaga w dziedziczeniu? Wirtualne klasy bazowe oferują sposób na zaoszczędzenie miejsca i uniknięcie niejasności w klasa hierarchie, które używają wielokrotnych dziedziczeń. Kiedy klasa podstawowa jest określony jako wirtualna baza , może działać pośrednio baza więcej niż jeden raz bez powielania jej członków danych.

Wiesz też, co to jest wirtualne dziedziczenie publiczne?

Dziedziczenie wirtualne jest techniką C++, która zapewnia, że tylko jedna kopia zmiennych składowych klasy bazowej jest dziedziczny przez klasy pochodne wnuków. Ta funkcja jest najbardziej przydatna w przypadku wielu osób dziedzictwo , ponieważ sprawia, że wirtualny bazować na wspólnym podobiekcie dla klasy pochodnej i wszystkich klas, które są z niego pochodne.

Jak interfejs rozwiązuje problem diamentów?

Jak używając an berło w języku Java rozwiązywać ten problem z diamentami ? Stąd, jeśli dwa interfejsy ma taką samą sygnaturę metody, a klasa chce dziedziczyć (implementy w Javie) z tych dwóch interfejsy , nie ma „ciała metody” do dziedziczenia, stąd „ diament dziedzictwo wydanie unika się.

Zalecana: