如何在 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=].