Cre*_*sht 1 java constructor super
虽然由于我的经验不足,我没有错误或任何关于此事的代码,但super()在子类的构造函数中隐式调用 使我感到困惑。
如果我调用一个孩子的构造函数,他的父母也是一个孩子等等,会不会有一系列连续的 super()调用?就像在,因为父构造函数也有一个隐式调用,super()该调用会被进行吗?
如果是这样,那能走多深/走多深?
如果我一直困惑或问了一个明显的问题,我的导师没有提供令人满意的答案,我深表歉意。
会有一系列连续的
super()调用吗?
是的,这正是发生的事情。每次在 Java 中构造一个对象时new Foo(),它都会首先沿着完整的继承树向上并开始从上到下构造父对象。
所以如果你有这样的设置
class Chihuahua extends Dog { ... }
class Dog extends Animal { ... }
class Animal { ... }
Run Code Online (Sandbox Code Playgroud)
并构造一个实例 Chihuahua
new Chihuahua()
Run Code Online (Sandbox Code Playgroud)
Java顺着继承链,按如下顺序调用父构造函数
在构造一个对象之前,Java 首先必须构造它的父 base。
Object - 继承的结束如果是这样,那能走多深/能走多深?
它总是沿着完整的继承树上升。这总是以全父级结束 Object。要么通过显式扩展它
class Foo extends Object { ... }
Run Code Online (Sandbox Code Playgroud)
或者通过隐式扩展它,如果你不写任何东西
class Foo { ... }
Run Code Online (Sandbox Code Playgroud)
Object 是一个特殊的类,它没有更多的父类,并且标志着每个继承链的结束。
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |