virtual/override и новые ключевые слова в C#: когда использовать какое ключевое слово для переписывания метода?
], определяя методы в базовых классах, программисты часто сталкиваются с проблемой использования «виртуальных» или «новых» ключевых слов. Это решение значительно влияет на поведение переписывания методов в производных классах.
]virtual override
используйте ключевое слово «виртуальное» в методе базового класса, чтобы указать, что оно может быть переопределено в полученном классе. Чтобы переопределить метод, полученный класс должен использовать ключевое слово «переопределить». Это гарантирует, что переопределенный метод работает, как и ожидалось, сохраняя иерархию наследования и полиморфизм.
], когда полученный класс вызывает переписанный метод, он выполнит переопределенную версию, даже если эталонная переменная, содержащая объект, имеет тип базового класса. Это называется поздним привязкой и позволяет динамическое поведение.
]новое ключевое слово
вместо этого ключевое слово «новое» в методе полученного класса объявляет новый метод, который скрывает унаследованные методы с тем же именем. При использовании новый метод заменяет унаследованные методы в полученном классе, что уничтожает полиморфизм.]
, когда полученный класс вызывает метод, объявленный «Новым», он выполняет новый метод независимо от типа эталонной переменной, которая удерживает объект. Это считается ранним связыванием и препятствует полиморфизму.]
Пример
рассмотрим следующий пример кода:]
public class Base
{
public virtual bool DoSomething() { return false; }
}
public class Derived : Base
{
public new bool DoSomething() { return true; }
}
Если вы назначаете экземпляр, полученную с переменной базы типа и вызовите dosomething (), результат будет false, если вы используете виртуальную/переопределение, но если вы используете новый, результат будет true. Это подчеркивает разницу между поздним связыванием и ранним связыванием. ]
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3