虽然由于缺乏经验,我没有错误,也没有任何代码,但是在子类构造函数中对super()
的隐式调用使我感到困惑。
如果我调用的是其子构造函数(其父函数也是子构造函数等),那么会有一个连续的系列 super()
调用吗?同样,由于父构造函数也有对super()
的隐式调用,所以会进行调用吗?
如果是这样的话,,,/how,它能深入到多深呢?
我很抱歉,如果我一直困惑或问了一个明显的问题,我的老师没有提供一个令人满意的答案。
发布于 2021-03-05 07:37:33
构造链
会有一系列连续的
super()
调用吗?
是的,事情就是这样的。每次在Java中构造对象时,所以new Foo()
,它将首先在完全继承树上运行,然后开始从上到下构造父级。
所以如果你有这样的设置
class Chihuahua extends Dog { ... }
class Dog extends Animal { ... }
class Animal { ... }
并构造Chihuahua
的一个实例
new Chihuahua()
Java跟踪继承链,并按以下顺序调用父构造函数
在构建对象之前,Java首先必须构造它的父基。
Object
-继承的终结
,如果是的话,它能深入到多深?
它总是上升到完整的继承树。总是以全父级Object
结尾。或者通过显式扩展
class Foo extends Object { ... }
或者通过隐式导出,如果您没有写任何东西
class Foo { ... }
Object
是一个特殊的类,它没有更多的父级,它标志着每个继承链的结束。
https://stackoverflow.com/questions/66488473
复制相似问题