class Baseclass
{
public void Fun()
{
Console.Write("Base class" + " ");
}
}
class Derived1 : Baseclass
{
new void Fun()
{
Console.Write("Derived1 class" + " ");
}
}
class Derived2 : Derived1
{
new void Fun()
{
Console.Write("Derived2 class" + " ");
}
}
В соответствии с определением «нового» модификатор: «новое ключевое слово явно скрывает элемент, который наследуется от базового класса.». Затем, когда мы вызываем метод с новым модификатором в производном классе, он всегда должен давать результат как «Derived2 class», Но я всегда получаю вывод «Базовый класс» во всех трех условиях.
Baseclass d1 = new Derived1();
Baseclass d2 = new Derived2();
Baseclass b = new Baseclass();
d1.Fun();
d2.Fun();
b.Fun();
Может кто-нибудь, пожалуйста, очистить мои сомнения?
Не могли бы вы объяснить это кратко? – Prateik
Это просто полиморфизм. Вы можете назначить более конкретный класс своей базе, но тогда вы сможете получить доступ к свойствам базы. Но Объект можно отличить от его реальной формы. Пример 'var castd1 = (Derived1) d1' –
Я признаю, что мой ответ частично неполный. Ответ @paolo_montgomery_russo станет причиной того, что вы каждый раз видите один и тот же вывод. –