Другие языки программирования и технологии

Что такое virtual и override в C#?

Обьясните мне дeбилy, что это такое. Простым и ясным языком, без использования всяких "умных" словечек.
Выше ответили правильно, но не пояснили важный момент. Объекты унаследованных классов принадлежат не только своему классу, но и родительскому классу. Поэтому переменная, имеющая тип базового класса, может содержать ссылку на объект любого дочернего класса, а не только на объект базового класса. Допустим, в базовом классе и в дочернем классе есть метод Show. Если он не виртуальный, то будет вызван метод Show из того класса, который указан как тип переменной. Если Show виртуальный метод, то будет вызван метод Show из класса к которому фактически принадлежит объект. Это называется полиморфизм, поскольку вызываемый метод зависит от класса, которому принадлежит объект.
Пример.

class Base
{
public void Show1() { Console.WriteLine("Base.Show1"); }
public virtual void Show2() { Console.WriteLine("Base.Show2"); }
}

class A : Base
{
public new void Show1() { Console.WriteLine("A.Show1"); }
public override void Show2() { Console.WriteLine("A.Show2"); }
}

Base b = new Base();
b.Show1(); // Base.Show1
b.Show2(); // Base.Show2

Base a = new A();
a.Show1(); // Base.Show1
a.Show2(); // A.Show2

A aa = new A();
aa.Show1(); // A.Show1
aa.Show2(); // A.Show2
М!
М@ксим !!!
36 282
Лучший ответ
override - используем данную версию функции вместо версии в родителе (более высший класс)
virtual - данную функцию мы можем исполнить по-своему в ребенке (подклассе)
virtual - метод, который может быть по-разному реализован в потомках.
override - перезаписанный метод
Например,

Животное {
virtual голос () { курлык-курлык } // виртуальный метод
}

Животное: Собака {
голос () override { Гав-гав } // перезаписываем метод голос для собаки
}

Животное: Петух {
голос () override { Кукареку } // а теперь для петуха
}
Славик Ус
Славик Ус
1 411