C# κληρονομικότητα και πολυμορφισμός με παραδείγματα προγραμμάτων
Τι είναι η κληρονομικότητα στη C#;
Κληρονομία είναι μια σημαντική έννοια της C#. Η κληρονομικότητα είναι μια έννοια στην οποία ορίζετε τις γονικές και τις θυγατρικές κλάσεις. Οι θυγατρικές κλάσεις κληρονομούν μεθόδους και ιδιότητες της γονικής κλάσης, αλλά ταυτόχρονα, μπορούν επίσης να τροποποιήσουν τη συμπεριφορά των μεθόδων εάν απαιτείται. Η θυγατρική κλάση μπορεί επίσης να ορίσει δικές της μεθόδους εάν απαιτείται.
Ας κατανοήσουμε καλύτερα την κληρονομικότητα C# από ένα Παράδειγμα προγράμματος:
Παράδειγμα κληρονομικότητας C#
Ας δούμε τώρα πώς μπορούμε να ενσωματώσουμε την έννοια της κληρονομικότητας στον κώδικά μας.
Βήμα 1) Το πρώτο βήμα είναι να αλλάξετε τον κώδικα για την τάξη του Tutorial. Σε αυτό το βήμα, προσθέτουμε τον παρακάτω κώδικα στο αρχείο Tutorial.cs.
Σημειώστε ότι τώρα πρέπει να προσθέσουμε τον τροποποιητή πρόσβασης του 'protected' και στο πεδίο TutorialID και TutorialName.
Θυμηθείτε ότι είχαμε αναφέρει αυτόν τον τροποποιητή πρόσβασης στο σεμινάριο του Access Modifier. Λοιπόν εδώ μπορείτε να δείτε τον σκοπό της ύπαρξης αυτού. Μόνο όταν έχετε αυτόν τον τροποποιητή πρόσβασης (προστατευμένο), η θυγατρική τάξη μπορεί να χρησιμοποιεί τα πεδία της γονικής κλάσης.
Βήμα 2) Το δεύτερο βήμα είναι να προσθέσουμε τη νέα μας θυγατρική κλάση. Το όνομα αυτής της κλάσης θα είναι "Guru99Tutorial”. Σε αυτό το βήμα, προσθέτουμε τον παρακάτω κώδικα στο αρχείο Tutorial.cs. Ο κώδικας θα πρέπει να τοποθετηθεί μετά τον ορισμό της κλάσης Tutorial.
Code Εξήγηση:-
- Το πρώτο βήμα είναι η δημιουργία του Guru99Θυγατρική κλάση Tutorial. Πρέπει επίσης να αναφέρουμε ότι αυτή η κλάση θα είναι θυγατρική κλάση της κλάσης Tutorial. Αυτό γίνεται με τη λέξη-κλειδί ':'.
- Στη συνέχεια, ορίζουμε μια μέθοδο που ονομάζεται RenameTutorial. Θα χρησιμοποιηθεί για τη μετονομασία του πεδίου TutorialName. Αυτή η μέθοδος δέχεται μια μεταβλητή συμβολοσειράς που περιέχει το νέο όνομα του Tutorial.
- Στη συνέχεια αντιστοιχίσαμε την παράμετρο pNewName στο πεδίο TutorialName.
Σημείωση: – Παρόλο που δεν έχουμε ορίσει το πεδίο TutorialName στο “Guru"99Tutorial", εξακολουθούμε να έχουμε πρόσβαση σε αυτό το πεδίο. Αυτό οφείλεται στο γεγονός ότι "GuruΤο "99Tutorial" είναι μια θυγατρική κλάση της κλάσης Tutorial. Και επειδή κάναμε τα πεδία της κλάσης Tutorial ως προστατευμένα, είναι προσβάσιμα από αυτήν την κλάση.
Βήμα 3) Το τελευταίο βήμα είναι να τροποποιήσουμε το κύριο αρχείο Program.cs. Στην εφαρμογή κονσόλας μας, θα δημιουργήσουμε ένα αντικείμενο του Guru99Κλάση Tutorial. Με αυτό το αντικείμενο, θα καλέσουμε τη μέθοδο 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();
}
}
}
Code Εξήγηση:-
- Το πρώτο βήμα είναι η δημιουργία ενός αντικειμένου για το Guru99Τάξη Tutorial. Αυτό γίνεται μέσω της λέξης-κλειδιού 'new'. Σημειώστε ότι αυτή τη φορά δεν δημιουργούμε ένα αντικείμενο της κλάσης Tutorial.
- Χρησιμοποιούμε τη μέθοδο RenameTutorial του Guru99Κλάση Tutorial για να αλλάξετε το πεδίο TutorialName. Περνάμε τη συμβολοσειρά ".Net by Guru99" στη μέθοδο RenameTutorial.
- Στη συνέχεια καλούμε τη μέθοδο GetTutorial. Σημειώστε ότι παρόλο που αυτή η μέθοδος δεν ορίζεται στο GuruΣτην κλάση 99Tutorial, εξακολουθούμε να έχουμε πρόσβαση σε αυτήν τη μέθοδο. Η έξοδος της μεθόδου GetTutorial εμφανίζεται στη συνέχεια στην κονσόλα μέσω της μεθόδου Console.WriteLine.
Εάν ο παραπάνω κωδικός εισαχθεί σωστά και το πρόγραμμα εκτελεστεί με επιτυχία, θα εμφανιστεί η ακόλουθη έξοδος.
Παραγωγή:
Από την έξοδο, μπορούμε να δούμε ξεκάθαρα ότι το πεδίο TutorialName μετονομάστηκε σε ".Net από Guru99”. Αυτό κατέστη δυνατό χάρη στη μέθοδο RenameTutorial που κλήθηκε από την κλάση-παιδί.
Τι είναι ο Πολυμορφισμός στην C#;
Πολυμορφισμός στο C# είναι μια έννοια OOPs όπου ένα όνομα μπορεί να έχει πολλές μορφές. Για παράδειγμα, έχετε ένα smartphone για επικοινωνία. Ο τρόπος επικοινωνίας που θα επιλέξετε μπορεί να είναι οτιδήποτε. Μπορεί να είναι κλήση, γραπτό μήνυμα, εικονομήνυμα, mail κλπ. Ο στόχος λοιπόν είναι κοινός, δηλαδή η επικοινωνία, αλλά η προσέγγισή τους είναι διαφορετική. Αυτό ονομάζεται Πολυμορφισμός.
Θα κατανοήσετε καλύτερα τον πολυμορφισμό C# από το παρακάτω Παράδειγμα Προγράμματος:
Παράδειγμα πολυμορφισμού C#
Ας δούμε τώρα πώς μπορούμε να ενσωματώσουμε την έννοια του Πολυμορφισμού στον κώδικά μας.
Βήμα 1) Το πρώτο βήμα είναι να αλλάξετε τον κώδικα για την τάξη του Tutorial. Σε αυτό το βήμα, προσθέτουμε τον παρακάτω κώδικα στο αρχείο Tutorial.cs.
Code Εξήγηση:-
1 & 2) Το πρώτο βήμα είναι το ίδιο όπως στα προηγούμενα παραδείγματά μας. Είμαστε προσεκτικοίping ο ορισμός της μεθόδου SetTutorial όπως είναι.
3) Αυτή η μέθοδος ορίζει το TutorialID και το TutorialName με βάση τις παραμέτρους pID και pName.
4) Εδώ κάνουμε μια αλλαγή στην τάξη μας όπου προσθέτουμε μια νέα μέθοδο με το ίδιο όνομα SetTutorial. Μόνο που αυτή τη φορά περνάμε μόνο μια παράμετρο που είναι το pName. Σε αυτήν τη μέθοδο, απλώς ορίζουμε το πεδίο του TutorialName σε pName.
Βήμα 2) Το τελευταίο βήμα είναι να τροποποιήσουμε το κύριο αρχείο Program.cs. Στην εφαρμογή κονσόλας μας, θα δημιουργήσουμε ένα αντικείμενο του Guru99Μάθημα με φροντιστήριο.
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();
}
}
}
Code Εξήγηση:-
- Στο πρώτο βήμα, χρησιμοποιούμε τη μέθοδο SetTutorial με 2 παραμέτρους. Όπου μεταβιβάζουμε τόσο το TutorialID όσο και το TutorialName σε αυτήν τη μέθοδο.
- Στο δεύτερο βήμα, καλούμε τώρα τη μέθοδο SetTutorial με μία μόνο παράμετρο. Απλώς μεταβιβάζουμε το TutorialName σε αυτήν τη μέθοδο.
Εάν ο παραπάνω κωδικός εισαχθεί σωστά και το πρόγραμμα εκτελεστεί, θα εμφανιστεί η ακόλουθη έξοδος. Εάν σε περίπτωση που θέλετε να λάβετε επίσης το αναγνωριστικό εκμάθησης μαζί με το όνομα του εκπαιδευτικού προγράμματος, θα πρέπει να ακολουθήσετε το παρακάτω βήμα
- Δημιουργήστε μια ξεχωριστή μέθοδο που ονομάζεται public int GetTutorialID
- Σε αυτήν τη μέθοδο γράψτε τη γραμμή κώδικα "return TutorialID". Αυτό μπορεί να χρησιμοποιηθεί για την επιστροφή του TutorialID στο πρόγραμμα κλήσης.
Παραγωγή:
Από την έξοδο, μπορούμε να δούμε ξεκάθαρα ότι και οι δύο μέθοδοι κλήθηκαν με επιτυχία. Εξαιτίας αυτού, οι συμβολοσειρές "First Tutorial" και "Second Tutorial" στάλθηκαν στην κονσόλα.
Περίληψη
- Η κληρονομικότητα είναι όπου μια θυγατρική κλάση κληρονομεί τα πεδία και τις μεθόδους της γονικής κλάσης. Στη συνέχεια, η θυγατρική τάξη μπορεί επίσης να ορίσει τις δικές της μεθόδους.
- Πολυμορφισμός σε C# είναι μια έννοια OOPs όπου ένα όνομα μπορεί να έχει πολλές μορφές.







