Объясните пожалуйста зачем нужны виртуальные функции в c#.
Зачем нужны слова : override и virtual?
Попробуйте объяснить кратко, но со смыслом пожалуйста.
Другие языки программирования и технологии
Виртуальные функции в c#,зачем они?
override означает перекрывание одноименного метода/свойства класса-потомка. по сути замена этим свойством старого свойства
например, в классе-потомке Form есть метод OnPaint, который вызывается при отрисовке формы. в нем ничего не происходит. мы в своем классе Form1, унаследованном от Form, объявляем такой метод с модификатором override - и пишем в нем некий код. теперь при отрисовке выполняется этот код
например, в классе-потомке Form есть метод OnPaint, который вызывается при отрисовке формы. в нем ничего не происходит. мы в своем классе Form1, унаследованном от Form, объявляем такой метод с модификатором override - и пишем в нем некий код. теперь при отрисовке выполняется этот код
1. Если вы создаете два похожих класса. удобнее не копипастить общие члены. а наследовать один от другого или оба от некоего общего, который сам по себе не нужен, а только для наследования.
Если вы хотите дополнить класс из готовой библиотеки, тоже нужно наследование.
2. И если вы хотите. чтобы в ваших классах был метод с одинаковым названием, но разным кодом, то в классе-предке эти методы делаете виртуальными. а в наследниках - override. Без этих слов не получится. так как компилятор не поймет. какой из вариантом метода когда применять.
Если вы хотите дополнить класс из готовой библиотеки, тоже нужно наследование.
2. И если вы хотите. чтобы в ваших классах был метод с одинаковым названием, но разным кодом, то в классе-предке эти методы делаете виртуальными. а в наследниках - override. Без этих слов не получится. так как компилятор не поймет. какой из вариантом метода когда применять.
Нужен что переопределять метод. К примеру у нас есть стандартный метод перевода объекта в 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();
}
}
Посмотрите разницу.
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();
}
}
Посмотрите разницу.
Похожие вопросы
- C++. Зачем определять чистую виртуальную функцию?
- Как передать функцию в качестве параметра другой функции на C++?
- Вопрос насчет объявления и параметра функции в C++
- подскажите чем виртуальная функция отличается от обычной функции
- Объясните, что происходит в () функций в c++
- Описать функцию в c++, которая находит среднее арифметическое значение всех элементов сформированного непустого списка
- функция в C++
- Вопрос для тех кто знает точный ответ, язык C про функции все подробности вопроса внутри...
- Функции в языке программирования C.
- C++ Указатели и функции.