抽象类场景中的私有构造函数

时间:2012-08-11 04:28:27

标签: java constructor private private-members

是否有任何可行的解决方案可以在抽象类中使用私有构造函数。请指示

public abstract class BaseClass
{
    private String member;

    private BaseClass(String member)
    {
        this.member = member;
    }

    ... abstract methods...
}

2 个答案:

答案 0 :(得分:2)

这违背了抽象类的目的:

  1. 必须使用抽象类进行子类化。

  2. 如果方法是私有的,则子类无法看到它。

  3. ∴实际上无法到达。

    所以,没有。


    编辑 @yshavit在这个逻辑中找到了一个漏洞,这是非常正确的 - 看看他的评论(应该是问题的答案?)。

答案 1 :(得分:2)

抽象类可以有一个私有构造函数。但是这个类不能被另一个类扩展。而不是在抽象类中添加静态内部类并扩展该抽象类。

 abstract class  Base{
public abstract void set();

private Base(){
System.out.println("Private Constructor!");
}
static class Derived extends Base{
public void set(){
System.out.println("set() method implemented!");
}
}
public static void main(String[] args){
new Base.Derived().set();
}
}