我的代码:
class MyBaseClass
{
public void Print()
{
Console.WriteLine("This is the base class.");
}
}
class MyDerivedClass : MyBaseClass
{
new public void Print()
{
Console.WriteLine("This is the derived class.");
}
}
class Program
{
static void Main()
{
MyDerivedClass derived = new MyDerivedClass();
MyBaseClass mybc = (MyBaseClass)derived;
derived.Print(); // Call Print from derived portion.
mybc.Print(); // Call Print from base portion.
}
}
如果我将行MyBaseClass mybc = (MyBaseClass)derived;
更改为MyBaseClass mybc = new MyBaseClass();
,则结果与之相同。
我的问题:你能告诉我有什么区别吗?
谢谢!
答案 0 :(得分:1)
嗯,你的第一个代码是演员。这意味着你继承的任何属性在演员之后仍然会在你的对象mybc中。
虽然
MyBaseClass mybc = new MyBaseClass();
只是创建一个完全新的基类实例。由于您对打印方法进行了硬编码,因此无法更改任何输出,因为它们都属于同一类型。
如果您要打印班级的属性,例如姓名和号码,您会看到差异。