首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java隐式超级()调用递归

Java隐式超级()调用递归
EN

Stack Overflow用户
提问于 2021-03-05 07:32:46
回答 1查看 145关注 0票数 1

虽然由于缺乏经验,我没有错误,也没有任何代码,但是在子类构造函数中对super()的隐式调用使我感到困惑。

如果我调用的是其子构造函数(其父函数也是子构造函数等),那么会有一个连续的系列 super()调用吗?同样,由于父构造函数也有对super()的隐式调用,所以会进行调用吗?

如果是这样的话,,/how,它能深入到多深呢?

我很抱歉,如果我一直困惑或问了一个明显的问题,我的老师没有提供一个令人满意的答案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-05 07:37:33

构造链

会有一系列连续的super()调用吗?

是的,事情就是这样的。每次在Java中构造对象时,所以new Foo(),它将首先在完全继承树上运行,然后开始从上到下构造父级。

所以如果你有这样的设置

代码语言:javascript
运行
复制
class Chihuahua extends Dog { ... }
class Dog extends Animal { ... }
class Animal { ... }

并构造Chihuahua的一个实例

代码语言:javascript
运行
复制
new Chihuahua()

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

  1. Object
  2. Animal
  3. Dog
  4. Chihuahua

在构建对象之前,Java首先必须构造它的父基。

Object -继承的终结

,如果是的话,它能深入到多深?

它总是上升到完整的继承树。总是以全父级Object结尾。或者通过显式扩展

代码语言:javascript
运行
复制
class Foo extends Object { ... }

或者通过隐式导出,如果您没有写任何东西

代码语言:javascript
运行
复制
class Foo { ... }

Object是一个特殊的类,它没有更多的父级,它标志着每个继承链的结束。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66488473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档