从派生类转换为基类
本文关键字:基类 转换 派生 | 更新日期: 2023-09-27 18:26:29
我的代码:
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();
,结果与.相同
我的问题是:你能告诉我有什么不同吗?
谢谢!
好吧,您的第一个代码是一个强制转换。这意味着您继承的任何属性在该强制转换后仍将在对象mybc中。
而
MyBaseClass mybc = new MyBaseClass();
就是简单地创建一个基类的全新实例。由于您对打印方法进行了硬编码,它无法更改任何输出,因为它们都是相同的类型。
如果您打印类的一个属性,比如名称和数字,您就会看到差异。