是否有任何可行的解决方案可以在抽象类中使用私有构造函数。请指示
public abstract class BaseClass
{
private String member;
private BaseClass(String member)
{
this.member = member;
}
... abstract methods...
}
答案 0 :(得分:2)
这违背了抽象类的目的:
必须使用抽象类进行子类化。
如果方法是私有的,则子类无法看到它。
∴实际上无法到达。
所以,没有。
编辑 @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();
}
}