我有一个类'ClassA',它有私有构造函数.
public final class ClassA{
private ClassA{
}
public static void main(String[] arg) }{
;
;
;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我正在扩展"ClassA"类[ 在执行此操作之前删除了最终关键字]
public class ClassB extends ClassA{
public static void main(String[] arg) }{
;
;
;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我到了Implicit super constructor classA() is not visible. Must explicitly invoke another constructor.它是什么意思以及如何解决这个问题?
注意 我无法更改ClassA构造函数的访问说明符.
将ClassA的构造函数可见性更改private为protected.
构造函数总是从调用超类构造函数开始.如果构造函数显式包含对超类构造函数的调用,则使用该构造函数.否则暗示无参数构造函数.如果无参数构造函数不存在或子类不可见,则会出现编译时错误.
我会建议组合而不是继承(也许这就是设计师ClassA用于类使用的.示例:
public class ClassB {
private ClassA classA;
ClassB() {
// init classA
...
}
public ClassA asClassA() {
return classA;
}
// other methods and members for ClassB extension
}
您可以将方法委派ClassB给ClassA或覆盖它们.
| 归档时间: |
|
| 查看次数: |
25913 次 |
| 最近记录: |