Πώς να χρησιμοποιήσετε την κληρονομικότητα στο C#

Pos Na Chresimopoiesete Ten Kleronomikoteta Sto C



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

Πίνακας περιεχομένων

Τι είναι η κληρονομικότητα στο C#

Πώς λειτουργεί η κληρονομικότητα στο C#







Τύποι κληρονομικότητας σε C#



συμπέρασμα



Τι είναι η κληρονομικότητα στο C#

Στην C# χρησιμοποιώντας κληρονομικότητα, μια κλάση μπορεί να λάβει ή να κληρονομήσει τις ιδιότητες και τις μεθόδους μιας άλλης κλάσης. Με άλλα λόγια, επιτρέπει τη δημιουργία μιας νέας κλάσης που βασίζεται σε μια υπάρχουσα κλάση, η οποία είναι γνωστή ως βασική κλάση ή υπερκλάση. Μια κλάση που σχηματίζεται μετά τη λήψη των ιδιοτήτων μιας βασικής κλάσης ονομάζεται μια παραγόμενη κλάση ή υποκατηγορία.





Αυτή η παραγόμενη κλάση στη C# όχι μόνο λαμβάνει ιδιότητες της βασικής κλάσης αλλά μπορεί επίσης να προσθέσει τα δικά της μοναδικά χαρακτηριστικά.

Πώς λειτουργεί η κληρονομικότητα στο C#

Στην C#, η κληρονομικότητα επιτυγχάνεται με τη χρήση του παχέος εντέρου (:) σύμβολο. Το όνομα της βασικής κλάσης ορίζεται μετά την άνω και κάτω τελεία και προσδιορίζεται από την προκύπτουσα κλάση.



Ακολουθεί η σύνταξη για τη δημιουργία μιας παράγωγης κλάσης που παίρνει ιδιότητες από τη βασική κλάση:

class DerivedClass : BaseClass

{

// παράγωγα μέλη κλάσης

}

Εδώ σε αυτόν τον κώδικα, ΠαράγωγηΚλάση είναι το όνομα της παραγόμενης κλάσης, και BaseClass είναι το όνομα της βασικής κλάσης. ο : Το σύμβολο υποδεικνύει ότι η DerivedClass κληρονομείται από τη BaseClass. Τα μέλη του DerivedClass μπορούν να έχουν πρόσβαση στα μέλη BaseClass, υπό την προϋπόθεση ότι δεν είναι ιδιωτικά.

Τύποι κληρονομικότητας σε C#

Η C# υποστηρίζει τέσσερις τύπους κληρονομικότητας: απλή, πολλαπλών επιπέδων, ιεραρχική και πολλαπλή κληρονομικότητα. Ας δούμε κάθε τύπο.

Ενιαία κληρονομιά

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

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

χρησιμοποιώντας το Σύστημα ;

χρησιμοποιώντας το Σύστημα ;
αυτοκίνητο κατηγορίας
{
δημόσιο κενός Αρχή ( )
{
Κονσόλα. WriteLine ( 'Το αυτοκίνητο ξεκίνησε' ) ;
}
}
κατηγορία Tesla : Αυτοκίνητο
{
δημόσιο κενός Επιταχύνω ( )
{
Κονσόλα. WriteLine ( «Η Tesla επιταχύνεται» ) ;
}
}
Πρόγραμμα τάξης
{
στατικός κενός Κύριος ( σειρά [ ] args )
{
Tesla myTesla = νέο Tesla ( ) ;
myTesla. Αρχή ( ) ; // Έξοδος: Το αυτοκίνητο ξεκίνησε
myTesla. Επιταχύνω ( ) ; // Έξοδος: Επιτάχυνση Tesla
}
}

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

ο Κατηγορία Tesla προέρχεται από την κατηγορία Car και παίρνει όλες τις ιδιότητες της κατηγορίας Car. Η κλάση Tesla προσθέτει μια μέθοδο που ονομάζεται Επιταχύνω() , το οποίο εκτυπώνει το μήνυμα Ο Τέσλα επιταχύνεται στην κονσόλα.

ο Κύριος() Η συνάρτηση ορίζει ένα στιγμιότυπο της κλάσης Tesla που ονομάζεται myTesla και καλεί τις μεθόδους Start() και Accelerate().

Κληρονομικότητα πολλαπλών επιπέδων

Η κληρονομικότητα πολλαπλών επιπέδων είναι όταν μια παραγόμενη κλάση κληρονομεί από μια άλλη παραγόμενη κλάση, η οποία με τη σειρά της κληρονομεί από μια βασική κλάση.

Για παράδειγμα, ο ακόλουθος κώδικας C# δείχνει την κληρονομικότητα και την παράκαμψη μεθόδου σε μια ιεραρχία κλάσης.

χρησιμοποιώντας το Σύστημα ;
κατηγορίας Ζώο
{
δημόσιο κενός Τρώω ( )
{
Κονσόλα. WriteLine ( 'Τρώση ζώων' ) ;
}
}
τάξη Θηλαστικού : Ζώο
{
δημόσιο κενός Τρέξιμο ( )
{
Κονσόλα. WriteLine ( 'Θηλαστικό που τρέχει' ) ;
}
}
σκύλος τάξης : Θηλαστικό ζώο
{
δημόσιο κενός Φλοιός ( )
{
Κονσόλα. WriteLine ( 'Σκυλί που γαβγίζει' ) ;
}
}
Πρόγραμμα τάξης
{
στατικός κενός Κύριος ( σειρά [ ] args )
{
Dog myDog = νέος σκύλος ( ) ;
ο σκύλος μου. Τρώω ( ) ; // Έξοδος: Τροφή ζώων
ο σκύλος μου. Τρέξιμο ( ) ; // Έξοδος: Θηλαστικό που τρέχει
ο σκύλος μου. Φλοιός ( ) ; // Έξοδος: γάβγισμα σκύλου
}
}

Εδώ Σκύλος είναι μια παραγόμενη κλάση που κληρονομεί από Θηλαστικό ζώο , το οποίο με τη σειρά του κληρονομεί από Ζώο . Η κλάση Dog έχει πρόσβαση σε όλες τις ιδιότητες, τις μεθόδους και τη συμπεριφορά των Θηλαστικών και των Ζώων και μπορεί επίσης να ορίσει τη δική της μοναδική μέθοδο Φλοιός() .

ο Κατηγορία ζώων είναι η βασική κλάση και έχει μια μέθοδο που ονομάζεται Τρώω() , το οποίο απλώς εκτυπώνει το μήνυμα Animal eating στην κονσόλα.

ο Τάξη θηλαστικών προέρχεται από την κλάση Animal και προσθέτει μια μέθοδο που ονομάζεται Τρέξιμο() , το οποίο εκτυπώνει το μήνυμα Mammal που τρέχει στην κονσόλα.

ο Κατηγορία σκύλων προέρχεται από την κλάση Mammal και προσθέτει μια μέθοδο που ονομάζεται Φλοιός() , το οποίο εκτυπώνει το μήνυμα Dog barking στην κονσόλα.

Η μέθοδος Main() δημιουργεί ένα στιγμιότυπο της κλάσης Dog που ονομάζεται ο σκύλος μου και καλεί τις μεθόδους Eat(), Run() και Bark().

Σημειώστε ότι οι μέθοδοι Eat() και Run() δεν ορίζονται στην κλάση Dog, αλλά κληρονομούνται από τις γονικές κλάσεις της Ζώο και Θηλαστικό ζώο , αντίστοιχα. ο Φλοιός() Η μέθοδος ορίζεται μόνο στην κατηγορία Dog.

  Κείμενο
Η περιγραφή δημιουργείται αυτόματα

Ιεραρχική Κληρονομικότητα

Στην Ιεραρχική κληρονομικότητα, διαφορετικοί αριθμοί παραγόμενων κλάσεων κληρονομούνται μόνο από μια κλάση βάσης. Για παράδειγμα:

χρησιμοποιώντας το Σύστημα ;
τάξη σχήμα
{
δημόσιο κενός Σχεδιάζω ( )
{
Κονσόλα. WriteLine ( 'Σχήμα σχεδίασης' ) ;
}
}
κύκλος τάξης : Σχήμα
{
δημόσιο κενός Γέμισμα ( )
{
Κονσόλα. WriteLine ( 'Κύκλος πλήρωσης' ) ;
}
}
Πλατεία τάξης : Σχήμα
{
δημόσιο κενός Χρώμα ( )
{
Κονσόλα. WriteLine ( 'Τετράγωνο χρωματισμού' ) ;
}
}
Πρόγραμμα τάξης
{
στατικός κενός Κύριος ( σειρά [ ] args )
{
Κύκλος myCircle = νέος κύκλος ( ) ;
myCircle. Σχεδιάζω ( ) ; // Έξοδος: Σχήμα σχεδίασης
myCircle. Γέμισμα ( ) ; // Έξοδος: Γέμισμα κύκλου

Τετράγωνο mySquare = νέα πλατεία ( ) ;
mySquare. Σχεδιάζω ( ) ; // Έξοδος: Σχήμα σχεδίασης
mySquare. Χρώμα ( ) ; // Έξοδος: Τετράγωνο χρωματισμού
}
}

Στον παραπάνω κώδικα και τα δύο Κύκλος και τετράγωνο προέρχονται κλάσεις που κληρονομούν από Σχήμα . Έχουν πρόσβαση στη μέθοδο Draw() που ορίζεται στο Shape και μπορούν επίσης να ορίσουν τις δικές τους μοναδικές μεθόδους Fill() και Color().

Εδώ δημιουργήσαμε ένα αντικείμενο της κλάσης Circle με το όνομα myCircle και ένα αντικείμενο του τετράγωνο κατηγορία με όνομα mySquare . Στη συνέχεια καλούμε το Σχεδιάζω() μέθοδος, η οποία κληρονομείται από την κλάση Shape, και στα δύο αντικείμενα.

Στη συνέχεια, καλούμε το Γέμισμα() μέθοδος στο myCircle, η οποία είναι συγκεκριμένη για την κλάση Circle, και το Χρώμα() μέθοδος στο mySquare, η οποία είναι συγκεκριμένη για την κλάση τετραγώνου.

Η έξοδος θα εκτυπωθεί στην κονσόλα ως εξής:

  Κείμενο
Η περιγραφή δημιουργείται αυτόματα με μέτρια εμπιστοσύνη

Πολλαπλή κληρονομιά

Η πολλαπλή κληρονομικότητα είναι όπου μια παραγόμενη κλάση κληρονομεί από πολλαπλές βασικές κλάσεις. Ωστόσο, η C# δεν υποστηρίζει πολλαπλή κληρονομικότητα. Για να επιτύχει παρόμοια λειτουργικότητα, η C# χρησιμοποιεί διεπαφές .

συμπέρασμα

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