从派生类转换为基类

时间:2014-10-15 05:01:57

标签: c# inheritance

我的代码:

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();,则结果与之相同。

我的问题:你能告诉我有什么区别吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

嗯,你的第一个代码是演员。这意味着你继承的任何属性在演员之后仍然会在你的对象mybc中。

虽然

MyBaseClass mybc = new MyBaseClass();

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

如果您要打印班级的属性,例如姓名和号码,您会看到差异。