C ++ Κληρονομικότητα

C Inheritance



Η κληρονομικότητα είναι ένα πολύ σημαντικό χαρακτηριστικό του αντικειμενοστραφούς προγραμματισμού. Επιτρέπει στον προγραμματιστή να αντλήσει μια κλάση από μια υπάρχουσα κλάση. Αυτό είναι πολύ χρήσιμο ειδικά σε ένα μεγάλο πολύπλοκο έργο επειδή επιτρέπει στον προγραμματιστή να χρησιμοποιήσει ξανά τον κώδικα.

Σε αυτό το άρθρο, πρόκειται να συζητήσουμε την έννοια της κληρονομικότητας στον προγραμματισμό C ++. Θα εξηγήσουμε την έννοια της συνάρτησης φίλου στο C ++ με παραδείγματα εργασίας.







Γιατί κληρονομικότητα;

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



Τύπος κληρονομικότητας

Υπάρχουν διάφοροι τύποι κληρονομικότητας:



  1. Απλή/Ενιαία κληρονομικότητα
  2. Ιεραρχική Κληρονομικότητα
  3. Πολυεπίπεδη κληρονομικότητα
  4. Πολλαπλή κληρονομικότητα

Σε αυτό το άρθρο, θα εξετάσουμε μόνο την απλή/απλή κληρονομικότητα.





Παράδειγμα 1:

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

#περιλαμβάνω

χρησιμοποιώντας το όνομα χώρου std?

κλάση Base_Class
{
δημόσιο:
intΕγώ?
κενόςαπεικόνιση()
{
κόστος<< «Εμφάνιση βασικής κατηγορίας» <<Εγώ<<endl?
}

}?

τάξη Derived_Class:public Base_Class
{
δημόσιο:
κενόςπροβολή()
{
κόστος<< 'Show of Derived Class' <<endl?
}
}?

intκύριος()
{
Derived_Class dc?
dcΕγώ = 100?
dcαπεικόνιση()?
dcπροβολή()?

ΕΠΙΣΤΡΟΦΗ 0?
}



Παράδειγμα 2:

Αυτό είναι ένα άλλο παράδειγμα κληρονομικότητας στο C ++. Σε αυτό το παράδειγμα, θα δούμε πώς ονομάζονται οι κατασκευαστές όταν δημιουργείται ένα αντικείμενο κλάσης που παράγεται.

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

#περιλαμβάνω
χρησιμοποιώντας το όνομα χώρου std?

κλάση Base_Class
{
δημόσιο:
Base_Class()
{
κόστος<< 'Base_Class - No Parameters' <<endl?
}
Base_Class(intΧ)
{
κόστος<< 'Base_Class - Parameters:' <<Χ<<endl?
}
}?

τάξη Derived_Class:public Base_Class
{
δημόσιο:
Παράγωγο_Τάξη()
{
κόστος<< 'Derived_Class - No Parameters' <<endl?
}
Παράγωγο_Τάξη(intκαι)
{
κόστος<< 'Derived_Class - Parameters:' <<και<<endl?
}
Παράγωγο_Τάξη(intΧ,intκαι):Base_Class(Χ)
{
κόστος<< 'Param of Derived_Class:' <<και<<endl?
}
}?

intκύριος()
{
Παράγωγη_Κλάση δ(7,19)?
}

Παράδειγμα 3:

Σε αυτό το παράδειγμα, θα δούμε πώς μπορούν να χρησιμοποιηθούν αντικείμενα κλάσης που προέρχονται.

Όπως μπορείτε να δείτε, ορίζονται δύο κατηγορίες: Rectangle_Class και Cube_Class. Η Rectangle_Class είναι η βασική κλάση από την οποία προέρχεται η κλάση που προέρχεται, δηλαδή η Cube_Class. Ως εκ τούτου, κληρονομούμε τις δυνατότητες από το Rectangle_Class στο Cube_Class.

Επίσης, μπορείτε να παρατηρήσετε ότι κληρονομούμε το Cube_Class με το δημόσιο έλεγχο πρόσβασης. Αυτό σημαίνει ότι η παράγωγη κλάση μπορεί να έχει πρόσβαση σε όλα τα μη ιδιωτικά μέλη της βασικής κλάσης.

Έχουμε δηλώσει ένα αντικείμενο της κλάσης που παράγεται και καλούμε τις μεθόδους από την βασική κλάση, δηλαδή, setLength () και setBreadth ().

#περιλαμβάνω

χρησιμοποιώντας το όνομα χώρου std?

κλάση Rectangle_Class
{
ιδιωτικός:
intμήκος?
intπλάτος?
δημόσιο:
Rectangle_Class()?
Rectangle_Class(intο,intσι)?
Rectangle_Class(Rectangle_Class&ρ)?
intgetLength()
{
ΕΠΙΣΤΡΟΦΗμήκος?
}
intgetBreadth()
{
ΕΠΙΣΤΡΟΦΗπλάτος?
}
κενόςsetLength(intο)?
κενόςsetBreadth(intσι)?
intπεριοχή()?
}?

κατηγορία Cube_Class:δημόσια Rectangle_Class
{
ιδιωτικός:
intύψος?
δημόσιο:
Cube_Class(intη)
{
ύψος=η?
}
intgetHeight()
{
ΕΠΙΣΤΡΟΦΗύψος?
}
κενόςsetHeight(intη)
{
ύψος=η?
}
intΕνταση ΗΧΟΥ()
{
ΕΠΙΣΤΡΟΦΗgetLength()*getBreadth()*ύψος?
}
}?


Rectangle_Class::Rectangle_Class()
{
μήκος=1?
πλάτος=1?
}
Rectangle_Class::Rectangle_Class(intο,intσι)
{
μήκος=ο?
πλάτος=σι?
}
Rectangle_Class::Rectangle_Class(Rectangle_Class&ρ)
{
μήκος=ρ.μήκος?
πλάτος=ρ.πλάτος?
}
κενόςRectangle_Class::setLength(intο)
{
μήκος=ο?
}
κενόςRectangle_Class::setBreadth(intσι)
{
πλάτος=σι?
}
intRectangle_Class::περιοχή()
{
ΕΠΙΣΤΡΟΦΗμήκος*πλάτος?
}

intκύριος()
{
Κύβος_Κλάση γ(8)?
ντο.setLength(12)?
ντο.setBreadth(9)?
κόστος<<'Όγκος είναι'<<ντο.Ενταση ΗΧΟΥ()<<endl?
}

Συμπέρασμα:

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