如何在 java 中跳过从祖父母调用 super 的继承中的一级?
How to skip one level in inheritance calling super from grandparent in java?
我有简单的三个classes:
class A {
public A(int a){ }
}
class B extends A {
public B(int b){ super(b); }
}
class C extends B {
public C(int c){ super(c); }
}
所以,class实例化的执行顺序是C->B->A->B->C,所有objects都被正确实例化了。那么问题来了:
我能否以某种方式为 C class 编写一个构造函数,如下所示:
public C(int c){
super.super(c);
}
想法是从 A class 调用构造函数,而不是从直接 parent B 调用构造函数。这可能吗?
不,你不能那样做。
All 类 需要构建层次结构。你不能绕过B
的构造。
你可以做的是在B
中编写一个protected
构造函数,它本质上是一个空操作,并从[=]中的构造函数调用它13=].
我有简单的三个classes:
class A {
public A(int a){ }
}
class B extends A {
public B(int b){ super(b); }
}
class C extends B {
public C(int c){ super(c); }
}
所以,class实例化的执行顺序是C->B->A->B->C,所有objects都被正确实例化了。那么问题来了:
我能否以某种方式为 C class 编写一个构造函数,如下所示:
public C(int c){
super.super(c);
}
想法是从 A class 调用构造函数,而不是从直接 parent B 调用构造函数。这可能吗?
不,你不能那样做。
All 类 需要构建层次结构。你不能绕过B
的构造。
你可以做的是在B
中编写一个protected
构造函数,它本质上是一个空操作,并从[=]中的构造函数调用它13=].