close
terminate
close
在我自己的类中创建SingleInheritance类的对象时,它不会引发任何错误,而在另一个类中执行相同的操作时,它会引发错误。 我知道在自己的类中创建对象很愚蠢,但这是在我尝试做其他事情时发生的。我需要对正在发生的事情进行解释。
答案 0 :(得分:1)
您的代码存在的问题是递归地创建了类Plumber
对象,并且没有任何条件可以终止它。
让我们看看您的课程Plumber
的内容及其实例化。
class Plumber
{
Plumber obj = new Plumber();
}
您认为在创建new Plumber()
对象时该怎么做。
它将实例化一个new Plumber()
到obj
,这反过来又创建了另一个new Plumber()
到obj.obj
,依此类推..
您确实可以将一个对象保持为Plumber,但要真正对其进行初始化,则需要特定的流程。
class Plumber
{
Plumber obj;
public Plumber()
{
if(/*condition*/)
{
obj = new Plumber();
}
}
// You can also use some methods to do so
public InstantiateObj()
{
obj = new Plumber();
}
}
答案 1 :(得分:1)
这是因为您没有实例化SingleInheritance
类。
代码
public class SingleInheritance {
SingleInheritance obj=new SingleInheritance();
public static void main(String[] args) {
Plumber rahul=new Plumber();
}
}
因为SingleInheritance
是静态函数,所以没有创建main
的新实例。
如果您将代码更改为:
public class SingleInheritance {
SingleInheritance obj=new SingleInheritance();
public static void main(String[] args) {
SingleInheritance rahul=new SingleInheritance();
}
}
您将得到相同的Stackoverflow异常,因为现在main
将实例化SingleInheritance
。获得Stackoverflow的原因是new Plumber()
像其他答案一样解释了自己的构造函数。