我有两个类(class)的学校套餐
类(class)学校
package school;
public class people
{
String Name = null;
public String getName()
{
return "Super Class Name : " + Name;
}
public void setName(String name)
{
Name = name;
}
}
类(class)学生
package school;
public class students extends people
{
public static void main(String[] args)
{
people objpeople1 = new people();
people objpeople2 = new students();
objpeople1.setName("David");
objpeople2.setName("Davis");
System.out.println(objpeople1.getName());
System.out.println(objpeople2.getName());
}
@Override
public String getName()
{
return "Child Class Name is: "+ getName();
}
}
第一个 getName 方法工作正常。当我尝试使用第二个时,它会生成异常。
objpeople2.getName() 正在生成 java.lang.StackOverflowError 异常
最佳答案
试试这个:
@Override
public String getName(){
return "Child Class Name is: " + super.getName();
}
您的 objpeople2.getName()
正在访问当前类的 getName()
,这导致递归调用相同的方法,这就是抛出 StackOverFlorError 异常的方式。使用super
关键字来引用当前类的父类(super class)。
关于java - 父子类 StackOverflowError 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14271730/