Γιατί η πολλαπλή κληρονομικότητα υποστηρίζεται στη C++ αλλά όχι στην Java;
Γιατί η πολλαπλή κληρονομικότητα υποστηρίζεται στη C++ αλλά όχι στην Java;

Βίντεο: Γιατί η πολλαπλή κληρονομικότητα υποστηρίζεται στη C++ αλλά όχι στην Java;

Βίντεο: Γιατί η πολλαπλή κληρονομικότητα υποστηρίζεται στη C++ αλλά όχι στην Java;
Βίντεο: JAVA - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ - Μέρος 2 από 7: Βασικές Διαφορές με C/C++ 2024, Νοέμβριος
Anonim

C++ , Common lisp και λίγες άλλες γλώσσες υποστηρίζει πολλαπλή κληρονομικότητα ενώ Ιάβα δεν κάνει υποστήριξη το. Ιάβα δεν επιτρέπει πολλαπλή κληρονομιά για να αποφευχθεί η ασάφεια που προκαλείται από αυτό. Ένα από τα παραδείγματα τέτοιου προβλήματος είναι το πρόβλημα με τα διαμάντια που εμφανίζεται στο πολλαπλή κληρονομιά.

Συνεπώς, γιατί η πολλαπλή κληρονομικότητα δεν υποστηρίζεται στην Java;

Ιάβα υποστηρίζει πολλαπλή κληρονομιά μόνο μέσω διεπαφών. Μια κλάση μπορεί να υλοποιήσει οποιονδήποτε αριθμό διεπαφών αλλά μπορεί να επεκτείνει μόνο μία κλάση. Πολλαπλή κληρονομιά είναι δεν υποστηρίζεται επειδή οδηγεί σε θανατηφόρο πρόβλημα με τα διαμάντια. Εσείς μην αποκτήσετε καμία λειτουργικότητα από τη διεπαφή.

Επίσης, τι είναι το πρόβλημα Diamond σε πολλαπλή κληρονομιά; Ο πρόβλημα με τα διαμάντια ” είναι μια ασάφεια που μπορεί να προκύψει ως συνέπεια της άδειας πολλαπλή κληρονομιά . Είναι ένα σοβαρό πρόβλημα για γλώσσες (όπως η C++) που επιτρέπουν πολλαπλή κληρονομιά του κράτους. Στην Java, ωστόσο, πολλαπλή κληρονομιά δεν επιτρέπεται για κλάσεις, μόνο για διεπαφές, και αυτές δεν περιέχουν κατάσταση.

Ομοίως, οι άνθρωποι ρωτούν γιατί η C++ υποστηρίζει πολλαπλή κληρονομικότητα, αλλά η C# όχι;

Πολλαπλή κληρονομιά σε Το C# C# δεν υποστηρίζει πολλαπλή κληρονομικότητα , γιατί σκέφτηκαν ότι προσθέτοντας πολλαπλή κληρονομιά πρόσθεσε υπερβολική πολυπλοκότητα ΝΤΟ# παρέχοντας πολύ μικρό όφελος. Σε ΝΤΟ# , τα μαθήματα επιτρέπεται μόνο να κληρονομώ από μια μονογονεϊκή κλάση, η οποία ονομάζεται single κληρονομία.

Πώς υποστηρίζει η C++ πολλαπλή κληρονομικότητα;

Σε αντίθεση με πολλές άλλες αντικειμενοστρεφείς γλώσσες προγραμματισμού, C++ επιτρέπει πολλαπλή κληρονομιά . Πολλαπλή κληρονομιά επιτρέπει σε μια παιδική τάξη να κληρονομώ από περισσότερες από μία γονικές κατηγορίες. Οι τάξεις Ζώων και Ερπετών κληρονομώ από αυτό. Μόνο η κλάση Animal παρακάμπτει τη μέθοδο breathe().