У меня есть следующий код.
public class Parent
{
public void Print()
{
Console.WriteLine ("Parent Method");
}
}
public class Child : Parent
{
public new void Print()
{
Console.WriteLine ("Child Method");
}
}
public class Program
{
public static void Main()
{
Child C = new Child();
C.Print();
}
}
Если я запустил этот код, я получаю результат "Child Method" Но если я сделаю следующее, почему я получаю результат "Родительский метод"?
public class Parent
{
public void Print()
{
Console.WriteLine ("Parent Method");
}
}
public class Child : Parent
{
public new void Print()
{
Console.WriteLine ("Child Method");
}
}
public class Program
{
public static void Main()
{
Parent P = new Child(); // The only difference is this.
P.Print();
}
}
Единственное отличие:
Child C = new Child();
Parent P = new Child();
Я думал, что new Child()
означает, что мы создаем экземпляр класса Child
.
И я думал, что оба, C
и P
, являются просто объектными ссылочными переменными, которые содержат расположение экземпляра класса Child
.
Можете ли вы исправить меня, если я ошибаюсь или скажу, если я пропущу что-то, потому что я не понимаю, почему в вышеуказанных случаях я получаю разные результаты?