从派生类转换为基类

本文关键字:基类 转换 派生 | 更新日期: 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();

就是简单地创建一个基类的全新实例。由于您对打印方法进行了硬编码,它无法更改任何输出,因为它们都是相同的类型。

如果您打印类的一个属性,比如名称和数字,您就会看到差异。