-2

是否有任何可行的解决方案在抽象类中有私有构造函数..请告知

public abstract class BaseClass
{
    private String member;

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

    ... abstract methods...
}
4

2 回答 2

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();
}
}
于 2012-08-11T05:07:54.713 回答
2

这违背了抽象类的目的:

  1. 抽象类必须是子类才能使用。

  2. 如果一个方法是私有的,子类就看不到它。

∴它实际上是无法到达的。

所以不行。


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

于 2012-08-11T04:37:04.220 回答