假设我有以下类结构:
public class A{
A(int a){
...
}
}
abstract class B extends A{
}
public class C extends B{
C(int a){
super(a);
}
}
Run Code Online (Sandbox Code Playgroud)
在myMethod不会调用A的构造函数的意义上,此代码无效.有没有办法做到这一点?
我最终想要做的是在不影响其功能的情况下为一组类添加功能.所有这些类当前都扩展了一个公共类(runtimeException),所以我想添加一个中间抽象类.
(编辑:C中的代码不应该是一个方法,它应该是一个构造函数)
您将无法B像您所写的那样声明类.要创建一个B你需要调用A构造函数的实例:
public abstract class B extends A {
public B() {
super(10); //or other number
}
}
public class C extends B {
public C(int a) {
super();
}
}
Run Code Online (Sandbox Code Playgroud)
换句话说,你总是调用"上一级"的构造函数,无论类是否是抽象的.
为了避免10我编写的这个奇怪的数字和缺少构造函数的int参数C,我建议至少为子类构造函数添加父类构造函数对任何extends一对类所需的所有参数.
| 归档时间: |
|
| 查看次数: |
396 次 |
| 最近记录: |