Sobes.tech
Junior — Middle

Paaiškinkite virtualiųjų metodų koncepciją C# kalboje ir jų vaidmenį polimorfizmo įgyvendinime.

sobes.tech AI

Atsakymas iš AI

C# kalboje virtualūs metodai yra metodai, deklaruojami su raktiniu žodžiu virtual, ir kurie gali būti perrašyti paveldėtose klasėse naudojant override. Tai yra pagrindas polimorfizmui įgyvendinti — galimybė iškviesti paveldėtų klasių metodus per nuorodas į bazinę klasę.

Kai metodas deklaruojamas kaip virtualus, jo iškvietimas yra nustatomas vykdymo metu (dinaminis susiejimas), o ne kompiliacijos metu. Tai leidžia objektui elgtis skirtingai priklausomai nuo jo tikrojo tipo.

Pavyzdys:

class Animal {
    public virtual void Speak() {
        Console.WriteLine("Gyvūnas išleidžia garsą");
    }
}

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

Animal a = new Dog();
a.Speak(); // Išves "Au-au"

Čia, nors kintamasis a yra tipo Animal, kviečiamas Dog klasės perrašytas Speak() metodas, dėka virtualaus metodo.