Sobes.tech
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 μέθοδο.