Новое ключевое слово используется для скрытия реализации базового класса. Но я не уверен, почему следующий код выводит результат как Baseclass
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" + " ");
}
}
class Program
{
public static void Main(string[ ] args)
{
Derived2 d = new Derived2();
d.fun();
}
}
Мы скрываем реализацию fun в производном2, но все же базовый класс называется почему так? Я что-то упускаю?