我的第一个问题:抽象类中的 protected 构造函数和公共(public)构造函数有什么区别?
我的第二个问题:如果抽象类有一个私有(private)构造函数,它有意义吗?
提前致谢!
最佳答案
一种可能的设计是在抽象类上使用私有(private)构造函数:
public abstract class BaseClass
{
private BaseClass(Object param)
{
//Do something with parameters
}
//Provide various methods that descendant classes will know how to perform
public static BaseClass FromObject(Object value)
{
//Based on object, choose which type of derived class to construct...
}
private class HiddenDerivedA : BaseClass
{
public HiddenDerivedA(Object value)
: base(value)
{
}
}
private class HiddenDerivedB : BaseClass
{
public HiddenDerivedB(Object value)
: base(value)
{
}
}
}
如果派生实现与用于构造它们的选择逻辑紧密耦合,并且您希望提供与其余代码的高度隔离,则此模式很有用。它使您免除了必须支持您明确指定的继承者之外的其他继承者的责任,并允许您将所有私有(private)状态从基类公开到您的派生类。
关于c# - 关于具有私有(private)、公共(public)和 protected 构造函数的抽象类的一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3454285/