C# κληρονομικότητα και πολυμορφισμός με παραδείγματα προγραμμάτων
Τι είναι η κληρονομικότητα στη C#;
Κληρονομία είναι μια σημαντική έννοια της C#. Η κληρονομικότητα είναι μια έννοια στην οποία ορίζετε τις γονικές και τις θυγατρικές κλάσεις. Οι θυγατρικές κλάσεις κληρονομούν μεθόδους και ιδιότητες της γονικής κλάσης, αλλά ταυτόχρονα, μπορούν επίσης να τροποποιήσουν τη συμπεριφορά των μεθόδων εάν απαιτείται. Η θυγατρική κλάση μπορεί επίσης να ορίσει δικές της μεθόδους εάν απαιτείται.
Ας κατανοήσουμε καλύτερα την κληρονομικότητα C# από ένα Παράδειγμα προγράμματος:
Παράδειγμα κληρονομικότητας C#
Ας δούμε τώρα πώς μπορούμε να ενσωματώσουμε την έννοια της κληρονομικότητας στον κώδικά μας.
Βήμα 1) Το πρώτο βήμα είναι να αλλάξετε τον κώδικα για την τάξη του Tutorial. Σε αυτό το βήμα, προσθέτουμε τον παρακάτω κώδικα στο αρχείο Tutorial.cs.
Σημειώστε ότι τώρα πρέπει να προσθέσουμε τον τροποποιητή πρόσβασης του 'protected' και στο πεδίο TutorialID και TutorialName.
Θυμηθείτε ότι είχαμε αναφέρει αυτόν τον τροποποιητή πρόσβασης στο σεμινάριο του Access Modifier. Λοιπόν εδώ μπορείτε να δείτε τον σκοπό της ύπαρξης αυτού. Μόνο όταν έχετε αυτόν τον τροποποιητή πρόσβασης (προστατευμένο), η θυγατρική τάξη μπορεί να χρησιμοποιεί τα πεδία της γονικής κλάσης.
Βήμα 2) Το δεύτερο βήμα είναι να προσθέσουμε τη νέα μας παιδική τάξη. Το όνομα αυτής της τάξης θα είναι "Guru99Tutorial". Σε αυτό το βήμα, προσθέτουμε τον παρακάτω κώδικα στο αρχείο Tutorial.cs. Ο κώδικας θα πρέπει να τοποθετηθεί μετά τον ορισμό της κλάσης Tutorial.
Επεξήγηση κώδικα: -
- Το πρώτο βήμα είναι να δημιουργήσετε την παιδική τάξη Guru99Tutorial. Πρέπει επίσης να αναφέρουμε ότι αυτή η τάξη θα είναι μια παιδική τάξη της τάξης Tutorial. Αυτό γίνεται με τη λέξη-κλειδί ':'.
- Στη συνέχεια, ορίζουμε μια μέθοδο που ονομάζεται RenameTutorial. Θα χρησιμοποιηθεί για τη μετονομασία του πεδίου TutorialName. Αυτή η μέθοδος δέχεται μια μεταβλητή συμβολοσειράς που περιέχει το νέο όνομα του Tutorial.
- Στη συνέχεια αντιστοιχίσαμε την παράμετρο pNewName στο πεδίο TutorialName.
Σημείωση: – Παρόλο που δεν έχουμε ορίσει το πεδίο TutorialName στην κλάση "Guru99Tutorial", μπορούμε ακόμα να έχουμε πρόσβαση σε αυτό το πεδίο. Αυτό οφείλεται στο γεγονός ότι το "Guru99Tutorial" είναι μια παιδική τάξη της τάξης Tutorial. Και επειδή κάναμε τα πεδία της τάξης Tutorial ως προστατευμένα, μπορούν να προσπελαστούν από αυτήν την κλάση.
Βήμα 3) Το τελευταίο βήμα είναι να τροποποιήσουμε το κύριο αρχείο Program.cs. Στην εφαρμογή της κονσόλας μας, πρόκειται να δημιουργήσουμε ένα αντικείμενο της κλάσης Guru99Tutorial. Με αυτό το αντικείμενο, θα καλέσουμε τη μέθοδο RenameTutorial. Στη συνέχεια θα εμφανίσουμε το πεδίο TutorialName με τη βοήθεια της μεθόδου GetTutorial.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { public class Tutorial { protected int TutorialID; protected string TutorialName; public void SetTutorial(int pID,string pName) { TutorialID=pID; TutorialName=pName; } public String GetTutorial() { return TutorialName; } } public class Guru99Tutorial:Tutorial { public void RenameTutorial(String pNewName) { TutorialName=pNewName; } static void Main(string[] args) { Guru99Tutorial pTutor=new Guru99Tutorial(); pTutor.RenameTutorial(".Net by Guru99"); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } }
Επεξήγηση κώδικα: -
- Το πρώτο βήμα είναι να δημιουργήσετε ένα αντικείμενο για την κλάση Guru99Tutorial. Αυτό γίνεται μέσω της λέξης κλειδιού «νέα». Σημειώστε ότι αυτή τη φορά δεν δημιουργούμε αντικείμενο της κλάσης Tutorial.
- Χρησιμοποιούμε τη μέθοδο RenameTutorial της τάξης Guru99Tutorial για να αλλάξουμε το πεδίο TutorialName. Περνάμε τη συμβολοσειρά “.Net by Guru99” στη μέθοδο RenameTutorial.
- Στη συνέχεια καλούμε τη μέθοδο GetTutorial. Σημειώστε ότι παρόλο που αυτή η μέθοδος δεν έχει οριστεί στην κλάση Guru99Tutorial, εξακολουθούμε να έχουμε πρόσβαση σε αυτήν τη μέθοδο. Στη συνέχεια, η έξοδος της μεθόδου GetTutorial εμφανίζεται στην κονσόλα μέσω της μεθόδου Console.WriteLine.
Εάν ο παραπάνω κωδικός εισαχθεί σωστά και το πρόγραμμα εκτελεστεί με επιτυχία, θα εμφανιστεί η ακόλουθη έξοδος.
Παραγωγή:
Από την έξοδο, μπορούμε να δούμε ξεκάθαρα ότι το πεδίο TutorialName μετονομάστηκε σε ".Net by Guru99". Αυτό κατέστη δυνατό με τη μέθοδο RenameTutorial που καλείται από την θυγατρική τάξη.
Τι είναι ο Πολυμορφισμός στην C#;
Πολυμορφισμός στο C# είναι μια έννοια OOPs όπου ένα όνομα μπορεί να έχει πολλές μορφές. Για παράδειγμα, έχετε ένα smartphone για επικοινωνία. Ο τρόπος επικοινωνίας που θα επιλέξετε μπορεί να είναι οτιδήποτε. Μπορεί να είναι κλήση, γραπτό μήνυμα, εικονομήνυμα, mail κλπ. Ο στόχος λοιπόν είναι κοινός, δηλαδή η επικοινωνία, αλλά η προσέγγισή τους είναι διαφορετική. Αυτό ονομάζεται Πολυμορφισμός.
Θα κατανοήσετε καλύτερα τον πολυμορφισμό C# από το παρακάτω Παράδειγμα Προγράμματος:
Παράδειγμα πολυμορφισμού C#
Ας δούμε τώρα πώς μπορούμε να ενσωματώσουμε την έννοια του Πολυμορφισμού στον κώδικά μας.
Βήμα 1) Το πρώτο βήμα είναι να αλλάξετε τον κώδικα για την τάξη του Tutorial. Σε αυτό το βήμα, προσθέτουμε τον παρακάτω κώδικα στο αρχείο Tutorial.cs.
Επεξήγηση κώδικα: -
1 & 2) Το πρώτο βήμα είναι το ίδιο όπως στα προηγούμενα παραδείγματά μας. Διατηρούμε τον ορισμό της μεθόδου SetTutorial ως έχει.
3) Αυτή η μέθοδος ορίζει το TutorialID και το TutorialName με βάση τις παραμέτρους pID και pName.
4) Εδώ κάνουμε μια αλλαγή στην τάξη μας όπου προσθέτουμε μια νέα μέθοδο με το ίδιο όνομα SetTutorial. Μόνο που αυτή τη φορά περνάμε μόνο μια παράμετρο που είναι το pName. Σε αυτήν τη μέθοδο, απλώς ορίζουμε το πεδίο του TutorialName σε pName.
Βήμα 2) Το τελευταίο βήμα είναι να τροποποιήσουμε το κύριο αρχείο Program.cs. Στην εφαρμογή της κονσόλας μας, πρόκειται να δημιουργήσουμε ένα αντικείμενο της κλάσης Guru99Tutorial.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Tutorial { public int TutorialID; public string TutorialName; public void SetTutorial(int pID,string pName) { TutorialID=pID; TutorialName=pName; } public void SetTutorial(string pName) { TutorialName=pName; } public String GetTutorial() { return TutorialName; } static void Main(string[] args) { Tutorial pTutor=new Tutorial(); pTutor.SetTutorial(1,"First Tutorial"); Console.WriteLine(pTutor.GetTutorial()); pTutor.SetTutorial("Second Tutorial"); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } }
Επεξήγηση κώδικα: -
- Στο πρώτο βήμα, χρησιμοποιούμε τη μέθοδο SetTutorial με 2 παραμέτρους. Όπου μεταβιβάζουμε τόσο το TutorialID όσο και το TutorialName σε αυτήν τη μέθοδο.
- Στο δεύτερο βήμα, καλούμε τώρα τη μέθοδο SetTutorial με μία μόνο παράμετρο. Απλώς μεταβιβάζουμε το TutorialName σε αυτήν τη μέθοδο.
Εάν ο παραπάνω κωδικός εισαχθεί σωστά και το πρόγραμμα εκτελεστεί, θα εμφανιστεί η ακόλουθη έξοδος. Εάν σε περίπτωση που θέλετε να λάβετε επίσης το αναγνωριστικό εκμάθησης μαζί με το όνομα του εκπαιδευτικού προγράμματος, θα πρέπει να ακολουθήσετε το παρακάτω βήμα
- Δημιουργήστε μια ξεχωριστή μέθοδο που ονομάζεται public int GetTutorialID
- Σε αυτήν τη μέθοδο γράψτε τη γραμμή κώδικα "return TutorialID". Αυτό μπορεί να χρησιμοποιηθεί για την επιστροφή του TutorialID στο πρόγραμμα κλήσης.
Παραγωγή:
Από την έξοδο, μπορούμε να δούμε ξεκάθαρα ότι και οι δύο μέθοδοι κλήθηκαν με επιτυχία. Εξαιτίας αυτού, οι συμβολοσειρές "First Tutorial" και "Second Tutorial" στάλθηκαν στην κονσόλα.
Περίληψη
- Η κληρονομικότητα είναι όπου μια θυγατρική κλάση κληρονομεί τα πεδία και τις μεθόδους της γονικής κλάσης. Στη συνέχεια, η θυγατρική τάξη μπορεί επίσης να ορίσει τις δικές της μεθόδους.
- Πολυμορφισμός σε C# είναι μια έννοια OOPs όπου ένα όνομα μπορεί να έχει πολλές μορφές.