如何从java中的祖父母继承调用super继承一级?

pio*_*tao 5 java oop inheritance constructor superclass

我有三个简单的课程:

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); }
}
Run Code Online (Sandbox Code Playgroud)

因此,类实例化期间的执行顺序是C-> B-> A-> B-> C,并且所有对象都被正确实例化.那么,问题是:

我可以用某种方式为C类编写一个构造函数,如下所示:

  public C(int c){
    super.super(c);
  }
Run Code Online (Sandbox Code Playgroud)

这个想法是从A类调用构造函数,而不是从直接父B调用构造函数.这可能吗?

Bat*_*eba 10

不,你不能那样做.

需要构建层次结构中的所有类.你不能绕过建设B.

可以做的是编写一个protected构造函数,B它本质上是一个无操作,并从构造函数中调用它C.