Junior — Middle
Εξηγήστε την έννοια των εικονικών μεθόδων στη γλώσσα C# και τον ρόλο τους στην υλοποίηση του πολυμορφισμού.
sobes.tech AI
Απάντηση από AI
Στη C#, οι εικονικές μέθοδοι είναι μέθοδοι που δηλώνονται με τη λέξη-κλειδί virtual, και μπορούν να υπερισχύσουν σε κλάσεις που κληρονομούν με τη χρήση override. Αυτό αποτελεί τη βάση για την υλοποίηση πολυμορφισμού — τη δυνατότητα να καλούνται μέθοδοι κλάσεων που κληρονομούν μέσω αναφορών στην βασική κλάση.
Όταν μια μέθοδος δηλώνεται ως εικονική, η κλήση της καθορίζεται κατά την εκτέλεση (δυναμική δέσμευση), όχι κατά τη μεταγλώττιση. Αυτό επιτρέπει σε ένα αντικείμενο να συμπεριφέρεται διαφορετικά ανάλογα με τον πραγματικό του τύπο.
Παράδειγμα:
class Animal {
public virtual void Speak() {
Console.WriteLine("Το ζώο κάνει ήχο");
}
}
class Dog : Animal {
public override void Speak() {
Console.WriteLine("Γαβ γαβ");
}
}
Animal a = new Dog();
a.Speak(); // Εκτυπώνει "Γαβ γαβ"
Εδώ, παρόλο που η μεταβλητή a έχει τύπο Animal, καλείται η υπερισχύουσα μέθοδος Speak() της κλάσης Dog χάρη στη virtual μέθοδο.