您好我有一个Person
类,其方法fatherComesFirst
实例化Person father
。但是,当我在构造函数中调用此方法时,为什么jvm
抛出stackoverflow
错误?我是初学者。虽然我相信到目前为止我是对的。
我的代码。
package intermediate;
public class Person {
//getters & setters
private String firstName;
private String lastName;
public Person(String firstName, String lastName){
this.firstName = firstName;
this.lastName = lastName;
fatherComesFirst("",lastName);
}
public void fatherComesFirst(String firstName, String lastName){
Person father = new Person(firstName,lastName);
System.out.println(father.getFirstName()+" "+father.getLastName());
}
}
答案 0 :(得分:4)
因为无论何时创建Person()
类的实例,它都会调用函数fatherComesFirst()
,该函数在该函数的第一行创建同一类的另一个实例。这是一个无限循环。
答案 1 :(得分:1)
这实际上是一个无限循环。每当命中构造函数时,它都会调用一个实例化另一个Person的函数。当这个Person被实例化时,它也会调用同一个实例化另一个Person的函数,这个函数在构造中也会调用该函数......你得到了这个想法。