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.