Sobes.tech
Junior — Middle

Magyarázza el a virtuális módszerek fogalmát a C# nyelvben és szerepüket a polimorfizmus megvalósításában.

sobes.tech MI

Válasz az MI-től

C#-ban a virtuális metódusok olyan metódusok, amelyeket a virtual kulcsszóval lehet deklarálni, és amelyek felülírhatók az öröklődő osztályokban a override segítségével. Ez az alapja a polimorfizmus megvalósításának — az a képesség, hogy az alap osztályra mutató hivatkozásokon keresztül az öröklődő osztályok módszereit hívjuk.

Amikor egy metódust virtuálisnak deklarálunk, a metódushívás futásidőben (dinamikus kötés) dől el, nem fordítási időben. Ez lehetővé teszi, hogy egy objektum a valódi típusától függően másképp viselkedjen.

Példa:

class Animal {
    public virtual void Speak() {
        Console.WriteLine("Állat hangot ad ki");
    }
}

class Dog : Animal {
    public override void Speak() {
        Console.WriteLine("Vau-vau");
    }
}

Animal a = new Dog();
a.Speak(); // Kiírja: "Vau-vau"

Itt, bár az a változó típusát Animal-nak állítjuk be, a Dog osztályban felülírt Speak() metódus hívódik meg, köszönhetően a virtuális metódusnak.