是否有任何可行的解决方案,以在抽象的私有构造class..please建议私有构造
public abstract class BaseClass
{
private String member;
private BaseClass(String member)
{
this.member = member;
}
... abstract methods...
}
是否有任何可行的解决方案,以在抽象的私有构造class..please建议私有构造
public abstract class BaseClass
{
private String member;
private BaseClass(String member)
{
this.member = member;
}
... abstract methods...
}
抽象类可以有一个私有构造函数。但是那个阶级不能被另一个阶级扩展。而不是在抽象类中添加静态内部类并扩展该抽象类。
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();
}
}
这违背了抽象类的目的:
抽象类必须被分类以供使用。
如果某个方法是私有的,那么该子类无法看到它。
∴有效无法到达。
所以,没有。
编辑 @yshavit已经找到了这个逻辑,这是非常真实的一个洞 - 看看他的评论(这可能应该是一个问题的答案?)。
那么,你试过吗? – 2012-08-11 04:30:26
这是http://stackoverflow.com/questions/3334380/why-private-access-specifier-in-an-abstract-class-in-java-even-though-we-cannot的副本,并得到很好的回答那里。 – gview 2012-08-11 04:38:53