Πώς η εικονική κληρονομιά λύνει το πρόβλημα του διαμαντιού;
Πώς η εικονική κληρονομιά λύνει το πρόβλημα του διαμαντιού;

Βίντεο: Πώς η εικονική κληρονομιά λύνει το πρόβλημα του διαμαντιού;

Βίντεο: Πώς η εικονική κληρονομιά λύνει το πρόβλημα του διαμαντιού;
Βίντεο: 🔥 Πως είναι η κατάσταση μετά το Ν. 4800/2021 2024, Νοέμβριος
Anonim

Η εικονική κληρονομιά λύνει το κλασσικό" Πρόβλημα με διαμάντια ". Διασφαλίζει ότι η παιδική τάξη λαμβάνει μόνο μία παρουσία της κοινής βασικής κλάσης. Με άλλα λόγια, η τάξη του φιδιού θα έχουν μόνο ένα παράδειγμα της τάξης LivingThing. Οι κατηγορίες Ζώων και Ερπετών μοιράζονται αυτήν την περίπτωση.

Από αυτή την άποψη, ποιο είναι το πρόβλημα με το διαμάντι στην κληρονομικότητα;

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

Στη συνέχεια, το ερώτημα είναι πώς μια εικονική βασική κλάση βοηθά στην κληρονομικότητα; Κλάσεις εικονικής βάσης προσφέρει έναν τρόπο εξοικονόμησης χώρου και αποφυγή ασάφειων τάξη ιεραρχίες που χρησιμοποιούν πολλαπλές κληρονομιές. Όταν ένα βασική τάξη ορίζεται ως α εικονική βάση , μπορεί να λειτουργήσει ως έμμεσο βάση περισσότερες από μία φορές χωρίς επικάλυψη των μελών δεδομένων του.

Γνωρίζετε επίσης, τι είναι η εικονική δημόσια κληρονομιά;

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

Πώς η διασύνδεση επιλύει το πρόβλημα με το διαμάντι;

Πώς κάνει χρησιμοποιώντας ένα διεπαφή στην Java λύσει ο πρόβλημα με τα διαμάντια ? Επομένως, αν δύο διεπαφές έχει την ίδια υπογραφή μεθόδου και μια κλάση θέλει να κληρονομήσει (υλοποιεί σε Java) από αυτές τις δύο διεπαφές , δεν υπάρχει "σώμα μεθόδου" που να κληρονομήσει, ως εκ τούτου " διαμάντι κληρονομία" θέμα αποφεύγεται.

Συνιστάται: