Я прочитал, что модификатор new
скрывает метод базового класса.
using System;
class A
{
public void Y()
{
Console.WriteLine("A.Y");
}
}
class B : A
{
public new void Y()
{
// This method HIDES A.Y.
// It is only called through the B type reference.
Console.WriteLine("B.Y");
}
}
class Program
{
static void Main()
{
A ref1 = new A(); // Different new
A ref2 = new B(); // Polymorpishm
B ref3 = new B();
ref1.Y();
ref2.Y(); //Produces A.Y line #xx
ref3.Y();
}
}
Почему ref2.Y();
выводит A.Y
в качестве вывода?
Это простой полиморфизм, объект базового класса, указывающий на производный класс, поэтому он должен вызывать производную функцию класса. Я на самом деле Java cum С# coder; эти концепции просто ошеломили мой разум.
Когда мы говорим, что new
скрывает функцию базового класса, это означает, что функция класса base не может быть вызвана, что то, что скрывает, означает, насколько я знаю.