在我的编码中,我使用了Singleton类Singleton Design Pattern.问题是为什么它的子类不允许使用默认构造函数?
我得到编译时错误:
Implicit super constructor Singleton() is not visible. Must explicitly invoke another constructor
Run Code Online (Sandbox Code Playgroud)
Singleton.java
public class Singleton {
private static Singleton singleton;
private Singleton() {
System.out.println("I am user class");
}
public static Singleton getInstance() {
if(singleton == null) {
singleton = new Singleton();
}
return singleton;
}
}
Run Code Online (Sandbox Code Playgroud)
SubClass.java
public class SubClass extends Singleton {
public SubClass(){
System.out.println("I am sub class");
}
}
Run Code Online (Sandbox Code Playgroud)
当你创建一个实例时,SubClass它会自动调用constructor它SuperClass来初始化它的字段,并进一步调用它的所有超类构造函数.inheritance hierarchy
现在因为你的SuperClass构造函数是私有的,所以它不能调用它.所以,你得到了那个例外..
但这对subclass一个singleton班级没有意义,因为在那种情况下,your class will no longer be singleton.
你应该re-think关注你design和你想做什么.而change你的设计也相应.
| 归档时间: |
|
| 查看次数: |
819 次 |
| 最近记录: |