Per què s'admet l'herència múltiple a C++ però no a Java?
Per què s'admet l'herència múltiple a C++ però no a Java?

Vídeo: Per què s'admet l'herència múltiple a C++ però no a Java?

Vídeo: Per què s'admet l'herència múltiple a C++ però no a Java?
Vídeo: Converses a l'Espai Ciència | Mónica Bolufer 2024, De novembre
Anonim

C++ , Lisp comú i pocs altres idiomes suporta l'herència múltiple mentre java no ho fa suport això. Java no permet herència múltiple per evitar l'ambigüitat que provoca. Un dels exemples d'aquest problema és el problema del diamant que es produeix a herència múltiple.

En conseqüència, per què no s'admet l'herència múltiple a Java?

Java suports herència múltiple només mitjançant interfícies. Una classe pot implementar qualsevol nombre d'interfícies però només pot estendre una classe. Herència múltiple és no recolzat perquè condueix a un problema mortal del diamant. Vostè no obteniu cap funcionalitat de la interfície.

A més, què és el problema del diamant en l'herència múltiple? El problema del diamant ” és una ambigüitat que pot sorgir com a conseqüència de permetre herència múltiple . És un greu problema per a llenguatges (com C++) que ho permetin herència múltiple d'estat. A Java, però, herència múltiple no està permès per a les classes, només per a interfícies, i aquestes no contenen estat.

De la mateixa manera, la gent es pregunta, per què C++ admet l'herència múltiple però C# no?

Herència múltiple en C# C# no admet l'herència múltiple , perquè van raonar això afegint herència múltiple va afegir massa complexitat C# alhora que ofereix massa pocs beneficis. En C# , les classes només estan permeses heretar d'una classe monoparental, que s'anomena solter herència.

Com admet C++ l'herència múltiple?

A diferència de molts altres llenguatges de programació orientats a objectes, C++ permet herència múltiple . Herència múltiple permet a una classe infantil heretar de més d'una classe de pares. Les classes d'Animals i Rèptils heretar a partir d'ell. Només la classe Animal anul·la el mètode breathe().