【发布时间】:2015-05-12 01:54:30
【问题描述】:
我有一个抽象类和一个子类
abstract class abstractClass
{
public int x;
protected abstractClass(int x)
{
this.x = x;
}
}
class childClass : abstractClass
{
childClass(int x)
: base(x)
{
}
}
我有很多像这样的子类,所有这些类总是通过在它们的构造函数中调用 base(x) 来调用公共构造函数 abstractClass1(int x)。
当我想向构造函数添加新属性时,例如另一个int y,我必须编辑所有这些类并将y 作为参数添加到每个子构造函数以及抽象类构造函数中。
考虑到我事先知道每个子类都将使用抽象类构造函数并且不会添加任何其他内容,还有其他方法吗?
【问题讨论】:
-
取决于
y是什么。子类是否需要为y提供值?只取x的构造函数会继续有效吗? -
@BJMyers 是的,当然
y将从构造函数中获取其值,否则我只需将y添加到抽象类中就可以了 -
您可以添加另一个带有额外参数的构造函数,或者在方法签名中将参数设置为默认值。
标签: c# constructor abstract-class