Sobes.tech
Back to questions
Junior — Middle
63

Объясните концепцию виртуальных методов в языке C# и их роль в реализации полиморфизма.

Answer from AI

sobes.tech 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 благодаря виртуальному методу.