【问题标题】:What is the max level of inheritance in java?java中的最大继承级别是多少?
【发布时间】:2010-10-15 08:58:03
【问题描述】:

我想知道我可以继承一个类的时间是否有限? 或者有哪些因素会影响这一点?

【问题讨论】:

  • 我希望你永远不会达到这样的限制(如果存在的话):)
  • 为什么会有关闭这个的请求?这不是一个真正的问题吗?

标签: java oop


【解决方案1】:

阅读this(很有趣)

The system is out of resources.
Consult the following stack trace for details.
java.lang.StackOverflowError

【讨论】:

  • +1 进行一些有趣的研究,对于那些想在点击链接之前知道答案的人来说,实际编译和运行的答案深度约为 60 级
  • 有趣的实验,但@Jonathans 的回答仍然正确:对于所有实际应用,没有限制。
【解决方案2】:

对于所有实际应用,Java 中的继承树可能会增长到无限大。

【讨论】:

    【解决方案3】:

    规范中没有具体限制。

    可能存在依赖于实现的限制,只要您受到可用内存的限制(毕竟类信息需要存储在某个地方)。

    如果你达到了这个限制,你的设计无论如何都会被破坏(任何进入两位数的东西肯定是代码味道)。

    【讨论】:

      【解决方案4】:

      如果一个类是final,你不能继承它。

      除此之外,您还可以拥有无​​限的继承树。你也可以无限implement很多接口类。

      【讨论】:

      • 实现许多接口会产生广泛的继承树,'虽然,不适合深层的。
      • 实际上不是 - 请参阅@pinichi 的回答。
      • @Joachim Sauer,真的,我只是在详细说明,你们既可以无限深入地继承继承,也可以无限地扩大继承范围......
      • 再一次,两者都不是真的。同一篇文章指出继承宽度限制(最多)为 65535 - 实际上它可能更小。当然,在现实生活中的项目中,我们都不会接近这些限制——但仍然存在限制。
      • @Péter Török,我阅读了这篇文章,您确实是正确的。 “实际上”(在括号中),但这是可能的。我想知道如果我添加第 65536 个类,编译器会轰炸我吗?
      【解决方案5】:

      没有指定限制。实际上,它是无限的。

      【讨论】:

        猜你喜欢
        • 2019-03-10
        • 2011-06-11
        • 1970-01-01
        • 2017-01-11
        • 1970-01-01
        • 2012-02-18
        • 2018-04-04
        • 1970-01-01
        相关资源
        最近更新 更多