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

Виртуальные функции в c#,зачем они?

Объясните пожалуйста зачем нужны виртуальные функции в c#.
Зачем нужны слова : override и virtual?
Попробуйте объяснить кратко, но со смыслом пожалуйста.
override означает перекрывание одноименного метода/свойства класса-потомка. по сути замена этим свойством старого свойства
например, в классе-потомке Form есть метод OnPaint, который вызывается при отрисовке формы. в нем ничего не происходит. мы в своем классе Form1, унаследованном от Form, объявляем такой метод с модификатором override - и пишем в нем некий код. теперь при отрисовке выполняется этот код
Александр Авдюшин
Александр Авдюшин
26 662
Лучший ответ
1. Если вы создаете два похожих класса. удобнее не копипастить общие члены. а наследовать один от другого или оба от некоего общего, который сам по себе не нужен, а только для наследования.
Если вы хотите дополнить класс из готовой библиотеки, тоже нужно наследование.
2. И если вы хотите. чтобы в ваших классах был метод с одинаковым названием, но разным кодом, то в классе-предке эти методы делаете виртуальными. а в наследниках - override. Без этих слов не получится. так как компилятор не поймет. какой из вариантом метода когда применять.
Gm Gm
Gm Gm
99 243
Нужен что переопределять метод. К примеру у нас есть стандартный метод перевода объекта в string - ToString
class Class1
{
}

class Class2
{
public override string ToString()
{
return "ToStr";
}
}

class Program
{
static void Main(string[] args)
{
Class1 cl1 = new Class1();
Console.WriteLine(cl1.ToString());
Class2 cl2 = new Class2();
Console.WriteLine(cl2.ToString());
Console.ReadKey();
}
}

Посмотрите разницу.