Τι είναι ο πολυμορφισμός στον προγραμματισμό;
sobes.tech AI
Απάντηση από AI
Ο πολυμορφισμός είναι η ικανότητα αντικειμένων διαφορετικών κλάσεων να αντιδρούν διαφορετικά στην ίδια κλήση μεθόδου. Επιτυγχάνεται μέσω της χρήσης κληρονομικότητας, αφηρημένων κλάσεων και διεπαφών. Στην C#, ο πολυμορφισμός εκδηλώνεται μέσω της επανακαθορισμού (overriding) μεθόδων της βασικής κλάσης στις παράγωγες και μέσω της υπερφόρτωσης (overloading) μεθόδων.
Παραδείγματα πολυμορφισμού:
-
Επανακαθορισμός μεθόδων (Polymorphism σε χρόνο εκτέλεσης): Η παράγωγη κλάση παρέχει τη δική της υλοποίηση μιας μεθόδου που δηλώνεται στην βασική κλάση. Για αυτό, στη βασική κλάση χρησιμοποιείται η λέξη-κλειδί
virtual, και στην παράγωγηoverride.// Βασική κλάση class Shape { // Εικονική μέθοδος που μπορεί να επανακαθοριστεί public virtual void Draw() { // Προεπιλεγμένη υλοποίηση } } // Παράγωγη κλάση 1 class Circle : Shape { // Επανακαθορισμός της μεθόδου Draw public override void Draw() { // Υλοποίηση για κύκλο } } // Παράγωγη κλάση 2 class Square : Shape { // Επανακαθορισμός της μεθόδου Draw public override void Draw() { // Υλοποίηση για τετράγωνο } }Σε αυτή την περίπτωση, μπορείτε να δημιουργήσετε μια λίστα αντικειμένων
Shapeκαι να καλέσετε τη μέθοδοDrawγια καθένα, και θα καλείται η συγκεκριμένη υλοποίηση για κάθε τύπο σχήματος. -
Υπερφόρτωση μεθόδων (Polymorphism σε χρόνο μεταγλώττισης): Πολλές μέθοδοι με το ίδιο όνομα, αλλά με διαφορετικές υπογραφές (αριθμό ή τύπο παραμέτρων) στην ίδια κλάση.
class Calculator { // Υπερφορτωμένη μέθοδος Add (για int) public int Add(int x, int y) { return x + y; } // Υπερφορτωμένη μέθοδος Add (για double) public double Add(double x, double y) { return x + y; } }
Ο πολυμορφισμός προάγει τη δημιουργία πιο ευέλικτου, επεκτάσιμου και εύκολα συντηρήσιμου κώδικα. Επιτρέπει τη συγγραφή γενικού κώδικα που μπορεί να λειτουργεί με αντικείμενα διαφορετικών τύπων.