[英]Cast to base class from derived class
我的代码:
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();
只是创建您的基类的全新实例。 由于您对打印方法进行了硬编码,因此它们不能更改任何输出,因为它们都是同一类型。
如果您要打印类的属性(例如名称和数字),则会看到不同之处。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.