use*_*949 9 .net c# inheritance constructor
可能的重复:
构造函数和继承
为什么构造函数不被继承?
当定义继承自基类的类时,我必须重新定义其所有构造函数.我想知道为什么C#不支持从基类的构造函数继承?
nan*_*nan 16
构造函数不是继承的,因为我们无法正确确定派生类对象的实例化方式.当所有派生类都隐式使用父代的构造函数时,在我看来这将是一个问题,因为如果我们忘记重新定义构造函数,该对象可能已被错误地初始化.如果您希望派生类构造函数与父类构造函数执行相同操作,请使用base调用它.
还要注意,如果不调用显式获取参数的任何其他基类构造函数,则会自动运行基类构造函数(无参数).所以打电话base() is redundant.
派生类的构造函数隐式调用基类或Java术语中的超类的构造函数。在继承中,所有基类构造函数在类在类层次结构中出现的顺序之前在派生类的构造函数之前被调用。
现在,如果基类具有多个构造函数,则派生类必须定义应调用哪一个构造函数。例如:
public class CoOrds
{
private int x, y;
public CoOrds()
{
x = 0;
y = 0;
}
public CoOrds(int x, int y)
{
this.x = x;
this.y = y;
}
}
//inherits CoOrds:
public class ColorCoOrds : CoOrds
{
public System.Drawing.Color color;
public ColorCoOrds() : base ()
{
color = System.Drawing.Color.Red;
}
public ColorCoOrds(int x, int y) : base (x, y)
{
color = System.Drawing.Color.Red;
}
}
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请访问:http : //msdn.microsoft.com/zh-cn/library/ms228387(v=vs.80).aspx