Возможный дубликат:
метод скрывается в С# с допустимым примером .why он реализован в рамках.? что является преимуществом в реальном мире.
Мне интересно, как метод ciding может быть полезен в С#? Если вы погружаетесь в концепцию, вы можете обнаружить, что скрытие метода - это что-то запутанное и приводит нас к стилю спагетти. Для этого есть несколько причин:
1- Если вам нужен свежий метод в классе Derived, вы можете определить новый метод с новым именем в производном классе.
2 - В полиморфном использовании, когда вы используете восходящий поток, ожидаемое поведение не будет достигнуто, и это может запутать.
(Специально это странное поведение может быть настолько очевидным и очевидным, если класс Base и Derived Class находятся в разных библиотеках, и вы хотите, чтобы их полиморфное использование было где-то в вашем коде)
class Base
{
public void Method() { Console.WriteLine("I am Base Class"); }
}
class Derived: Base
{
public new void Method() { Console.WriteLine("I am Derived Class");}
}
class Program
{
static void Main(string[] args)
{
Base C = new Derived();
C.Method(); //output:"I am Base Class"
}
}
Такое поведение может быть запутанным, но если мы использовали "virtual" в " Base" и "override" в " Derived" (я имею в виду полиморфное использование) выход был: "Я - Производный класс". и этот результат - то, что я думаю, что большинство из нас ожидало.
Другими словами, я считаю, что в иерархии большинство разработчиков ожидали переопределенных методов в методах производного класса Not New, которые хотят скрыть реализацию базового класса.
Я не могу понять, почему такая плохая вещь, которая не имеет никаких преимуществ в языке С#? по крайней мере, я хочу знать, какие лучшие методы метода скрываются в С#?
благодарим вас за помощь