Java 隐式 super() 调用递归

Java Implicit super() call recursion

虽然由于我的经验不足,我没有错误或任何代码,但在 child class 的构造函数中对 super() 的隐式调用令人困惑我.

如果我正在调用一个child的构造函数,它的parent也是一个child,等等,是否会有系列的连续 super() 调用?因为 parent 构造函数也有一个隐式调用 super() 会调用吗?

如果是这样,它能走多深/它能走多深?

如果我感到困惑或提出了一个明显的问题,我深表歉意,我的导师没有提供令人满意的答案。

构造函数链

will there be a series of consecutive super() calls?

是的,这正是发生的事情。每次在Java构造一个对象,所以new Foo(),它会先往上全继承树,开始构造parents从上到下。

所以如果你有这样的设置

class Chihuahua extends Dog { ... }
class Dog extends Animal { ... }
class Animal { ... }

并构建 Chihuahua

的实例
new Chihuahua()

Java 跟进继承链并按以下顺序调用父构造函数

  1. 对象
  2. 动物
  3. 奇瓦瓦州

在构建对象之前,Java 首先必须构建其 父基


Object - 继承结束

And if so, how deep can that go/how deep does it go?

它总是沿着完整的继承树上升。它总是以 all-father-class Object 结尾。通过显式扩展它

class Foo extends Object { ... }

或者通过隐式扩展它,如果你不写任何东西

class Foo { ... }

Object 是一个特殊的 class,它没有进一步的父代并且标记每个继承链的末端。