存储子类的超类

时间:2013-11-02 04:38:31

标签: c# inheritance

我知道Superclass可以存储子类的实例,

例如:

public class Subclass
{
   private int color;

   public Subclass()
   {
     color = "red";
   }
}

Superclass v = new Subclass();

超类不了解子类中的方法,变量等, 然后施展它,让你可以访问这些。

这是如何运作的?

示例:

Vechicle v = new Car();
Car c = (Car) v;
Consoel.WriteLine(c.color);


Output:
red

1 个答案:

答案 0 :(得分:1)

这并不像你指定的那么简单。

如果在Car的构造函数中更改了颜色,则它将与红色不同。

此外还有virtual methods的概念。

以下不是继承而是强制转换。 Inheritance msdn

Car c = (Car) v;

所有继承的类型都可以类型转换为基类型,但不是必需的。 此外,还可以进行用户定义的转换以及辅助类的转换 Casting and Type Conversion - MSDN