gpt4 book ai didi

java - 从父类(super class)调用子类构造函数

转载 作者:行者123 更新时间:2023-12-02 03:58:56 26 4
gpt4 key购买 nike

我第一次遇到 java 中的继承,并且对构造函数有疑问。

考虑 A 类

class A{
...(Constructor) {
...
ObjectCreatedBySubClass= new B();
}
...(etc)


protected static B ObjectCreatedBySubClass;
}

及其子类

class B extends A{
B(){
..(No matter what code I put here, it does not work.)
}


...(Instance variables)
}

无论我改变什么,每次我都会得到

Exception in thread "main" java.lang.StackOverflowError
at A.<init>
at B.<init>
(repeat about 100 times)

我的教授解释说,我不应该“扩展”“有一个”关系,就像这里的情况一样。我将使用组合而不是继承来解决我的问题,但我的问题是

我不明白为什么会出现这个问题。由于(我假设)某种无限循环,它耗尽了内存,但我不知道为什么。在这种情况下我将如何正确使用继承?

任何帮助将不胜感激。

最佳答案

由于 B 扩展了 A,每次调用 B 的构造函数时,也会调用 A 的构造函数。然而,在 A 的构造函数的实现中,您实例化了 B,它在构造时调用 A 的构造函数。这种循环依赖永远不会被破坏,从而导致堆栈溢出。

关于java - 从父类(super class)调用子类构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35109358/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com