【发布时间】:2015-05-06 15:07:07
【问题描述】:
我开始相信这是不可能的,但我想看看是否有其他我忽略的东西可以帮助我解决这个问题。
使用此设置:
public abstract class parent
{
protected int x;
public parent(int i)
{
x = i;
}
}
public class child : parent { }
我有能力这样做吗:
child c = new child(2);
哪个使用基构造函数实例化子类?
我想这样做的原因是我想避免必须为所有派生类实现相同的构造函数,因为它们实际上都在做同样的事情,即为继承的成员初始化一个值。
我还想避免在每个子实现中都写这个:
public child(int i) : base(i) { }
那么,我怎样才能让构造函数可以继承呢?如果不可能,我该如何模拟呢?
【问题讨论】:
-
不,你不能那样做
-
不,如果您尝试编译器会报告错误,说明“在基类中未找到重载默认构造函数”之类的内容,则不能!
-
你为什么要避免这样写?如果纯粹是因为您不想输入它,请投资像 Resharper 之类的东西 - 它会在几次击键中为您编写。
-
如果你不想避免智利的实施,我认为你不能。
-
那不行;这意味着每个类都有一个无参数构造函数,派生自
System.Object。
标签: c# oop inheritance constructor