Συνιστάται, 2024

Επιλογή Συντάκτη

Διαφορά μεταξύ ενιαίας και πολλαπλής κληρονομίας

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


Συγκριτικό διάγραμμα

Βάση σύγκρισηςΕνιαία κληρονομιάΠολλαπλή κληρονομιά
ΒασικόςΗ παράγωγη κλάση κληρονομεί μία μόνο βασική κλάση.Η παράγωγη κλάση κληρονομεί δύο ή περισσότερες από δύο κατηγορίες βάσης.
ΕκτέλεσηΚλάση derived_class: class_address_specifierΚατηγορία από _class: access_specifier base_class1, access_specifier base_class2, ....
Πρόσβαση
Οι παράγωγες κλάσεις έχουν πρόσβαση σε χαρακτηριστικά μιας ενιαίας κατηγορίας βάσηςΟι παράγωγες κλάσεις έχουν πρόσβαση στα συνδυασμένα χαρακτηριστικά των κληρονομικών κατηγοριών βάσης
ΟρατότηταΔημόσιο, Ιδιωτικό, ΠροστατευμένοΔημόσιο, Ιδιωτικό, Προστατευμένο
Εκτελέστε χρόνοΑπαιτείται μικρός χρόνος εκτέλεσης πάνω από το κεφάλιΑπαιτείστε πρόσθετα γενικά έξοδα χρόνου εκτέλεσης σε σύγκριση με την ενιαία κληρονομιά

Ορισμός της ενιαίας κληρονομιάς

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

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

Τα χαρακτηριστικά γνωρίσματα της κατηγορίας λογαριασμού είναι acc_no (ιδιωτική) και ισορροπία (δημόσια) και οι λειτουργίες μελών αρχικοποιούνται (), get_accno () οι οποίες είναι δημόσιες. Τώρα, η "κλάση λογαριασμού" κληρονόμησε στη "δημοσίευση της κατηγορίας λογαριασμού" δημοσίως, έτσι ώστε όλα τα δημόσια μέλη της "κατηγορίας λογαριασμού" να μπορούν να έχουν άμεση πρόσβαση μέσω της "εξοικονόμησης κατηγορίας λογαριασμού". Μπορεί να έχει πρόσβαση στο ιδιωτικό μέλος της "κατηγορίας λογαριασμού" μέσω των λειτουργιών των δημόσιων μελών της "κατηγορίας λογαριασμού", αλλά δεν μπορεί να έχει άμεση πρόσβαση σε αυτές.

Εφαρμογή ενιαίας κληρονομιάς:

 # περιλαμβάνουν τη χρήση του ονόματος χώρου std. class λογαριασμός {int acc_no, ; δημόσια: ισορροπία float; άκυρη αρχικοποίηση (int x, int y) {acc_no = x; ισορροπία = y; } int get_accno. () {return acc_no; }}. class Saving_acc: δημόσιος λογαριασμός {float intrest_rate; public: // constructor της κλάσης Saving_acc Saving_acc (int c) {interest_rate = c; } άκυρη εμφάνιση () {cout < 

Ορισμός της πολλαπλής κληρονομιάς

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

Αφήνει να διευκολυνθεί με το παράδειγμα έχουμε τρεις κατηγορίες, δηλαδή Ποδήλατο, Αυτοκίνητο και Όχημα. Τώρα, το "Όχημα" μπορεί να κληρονομήσει τα χαρακτηριστικά του "Bike" καθώς και του "Car". Έτσι, το "Όχημα" γίνεται κλάδος και το "Bike" και "Car" γίνεται η βασική κατηγορία. Τώρα, το "Bike" και το "Car" κληρονομούνται δημοσίως από το "Vehicle" και μπορούν να έχουν πρόσβαση σε όλα τα δημόσια μέλη του Bike και του Car, αλλά έχουμε μια οντότητα Model_no προστατευμένη στο "Car" πρόσβαση στο "Όχημα".

Εφαρμογή της πολλαπλής κληρονομιάς:

 # συμπεριλαμβάνουν τη χρήση ονομάτων χώρου std; Bike κατηγορίας {int engine_cost; . δημόσια: void set_engine_cost (int x) {engine_cost = x; }}. αυτοκίνητο κατηγορίας {προστατευμένο: int Model_no; public: void set_Model_no (int p) {Model_no = p; }}. class Vehical: δημόσιο ποδήλατο, δημόσιο αυτοκίνητο {int no_of_wheels public: vehical (int w) {no_of_wheels = w; cout << "όχι των τροχών" < 

Βασικές διαφορές μεταξύ μονής και πολλαπλής κληρονομίας

  1. Η μόνη κληρονομικότητα είναι μία παράγωγη κλάση που έχει μια ενιαία κλάση βάσης, ενώ, σε πολλαπλή κληρονομιά, έχει δύο ή περισσότερες από δύο κατηγορίες βάσης, αλλά μία κλάση που προέρχεται από μόνη της.
  2. Η πολλαπλή κληρονομιά είναι αρκετά συγκεχυμένη καθώς εδώ μια μόνη κλάση κληρονομεί δύο ή περισσότερες βασικές τάξεις. Εάν οι κλάσεις βάσης έχουν ένα χαρακτηριστικό ή μια συνάρτηση με το ίδιο όνομα, τότε για την παράγωγη κλάση, γίνεται δύσκολο να προσδιοριστεί το χαρακτηριστικό ή η συνάρτηση της κλάσης βάσης που πρέπει να αποκομίσει.
  3. Τα εναέρια ζητήματα είναι λιγότερα σε περίπτωση κληρονομίας. Αλλά σε περίπτωση πολλαπλής κληρονομιάς η κατασκευή ή καταστροφή του αντικειμένου επικαλείται τους κατασκευαστές και τον καταστροφικό παράγοντα της γονικής τάξης στην ιεραρχία των τάξεων που αυξάνει το γενικό κόστος.
  4. Η ενιαία κληρονομιά είναι περισσότερο προς την εξειδίκευση. Ενώ η πολλαπλή κληρονομιά είναι περισσότερο προς γενίκευση.
  5. Δεδομένου ότι η ενιαία κληρονομιά έχει λιγότερα έξοδα, έχει λιγότερη διάρκεια εκτέλεσης σε σύγκριση με την πολλαπλή κληρονομικότητα.

συμπέρασμα

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

Top