抽象类&子类的强制构造函数 [英] Abstract class > mandatory constructor for child classes
本文介绍了抽象类&子类的强制构造函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
可能的重复项:
Why can’t I create an abstract constructor on an abstract C# class?
如何编写一个抽象类来说明子类必须有一个构造函数?
类似以下内容:
public abstract class FatherClass
{
public **<ChildConstructor>**(string val1, string val2)
{
}
// Someother code....
}
public class ChildClass1: FatherClass
{
public ChildClass1(string val1, string val2)
{
// DO Something.....
}
}
更新1:
如果我不能继承构造函数。如何防止有人忘记实现特定子类构造函数?
推荐答案
您不能。
但是,您可以在FatherClass上设置单个构造函数,如下所示:
protected FatherClass(string val1, string val2) {}
强制子类调用此构造函数-这将"鼓励"它们提供string val1, string val2
构造函数,但不强制它。
我认为您应该考虑使用abstract factory模式。如下所示:
interface IFooFactory {
FatherClass Create(string val1, string val2);
}
class ChildClassFactory : IFooFactory
{
public FatherClass Create(string val1, string val2) {
return new ChildClass(val1, val2);
}
}
只要需要创建FatherClass的子类的实例,就可以使用IFooFactory而不是直接构造。这使您能够强制使用(string val1, string val2)
签名来创建它们。
这篇关于抽象类&子类的强制构造函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文