De ce moștenirea multiplă este acceptată în C++, dar nu și în Java?
De ce moștenirea multiplă este acceptată în C++, dar nu și în Java?

Video: De ce moștenirea multiplă este acceptată în C++, dar nu și în Java?

Video: De ce moștenirea multiplă este acceptată în C++, dar nu și în Java?
Video: Why multiple inheritance not supported by java? #javainterview #multipleinheritance #inheritance 2024, Mai
Anonim

C++ , Lisp comun și alte câteva limbi suportă moștenirea multiplă in timp ce java nu a sustine aceasta. Java nu permite moștenire multiplă pentru a evita ambiguitatea cauzată de aceasta. Unul dintre exemplele unei astfel de probleme este problema diamantelor care apare în moștenire multiplă.

În consecință, de ce moștenirea multiplă nu este acceptată în Java?

Java suporturi moștenire multiplă numai prin interfețe. O clasă poate implementa orice număr de interfețe, dar poate extinde o singură clasă. Moștenire multiplă este nu susținut deoarece duce la o problemă mortală a diamantelor. Tu nu obțineți nicio funcționalitate din interfață.

De asemenea, care este problema diamantului în moștenirea multiplă? „ problema diamantelor ” este o ambiguitate care poate apărea ca o consecință a permiterii moștenire multiplă . Este un lucru serios problemă pentru limbaje (cum ar fi C++) care permit moștenire multiplă de stat. În Java, însă, moștenire multiplă nu este permisă pentru clase, doar pentru interfețe, iar acestea nu conțin stare.

De asemenea, oamenii se întreabă, de ce C++ acceptă moștenirea multiplă, dar C# nu?

Moștenire multiplă în C# C# nu acceptă moștenirea multiplă , pentru că au motivat această adăugare moștenire multiplă a adăugat prea multă complexitate C# oferind în același timp prea puține beneficii. În C# , orele au voie doar să moşteni dintr-o clasă de părinte unic, care se numește singur moştenire.

Cum acceptă C++ moștenirea multiplă?

Spre deosebire de multe alte limbaje de programare orientate pe obiecte, C++ permite moștenire multiplă . Moștenire multiplă permite unei clase de copii să moşteni din mai mult de o clasă de părinți. Clasele de animale și reptile moşteni din ea. Doar clasa Animal suprascrie metoda breathe().