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 跟进继承链并按以下顺序调用父构造函数
- 对象
- 动物
- 狗
- 奇瓦瓦州
在构建对象之前,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,它没有进一步的父代并且标记每个继承链的末端。
虽然由于我的经验不足,我没有错误或任何代码,但在 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 跟进继承链并按以下顺序调用父构造函数
- 对象
- 动物
- 狗
- 奇瓦瓦州
在构建对象之前,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,它没有进一步的父代并且标记每个继承链的末端。