我在学校套餐中有两个班级
小学
package school;
public class people
{
String Name = null;
public String getName()
{
return "Super Class Name : " + Name;
}
public void setName(String name)
{
Name = name;
}
}
班级学生
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异常
答案 0 :(得分:2)
试试这个:
@Override
public String getName(){
return "Child Class Name is: " + super.getName();
}
您的objpeople2.getName()
正在访问当前类的getName()
,这会导致以递归方式调用相同的方法,这就是抛出StackOverFlorError Exception的方式。使用super
关键字来引用当前类的超类。
答案 1 :(得分:1)
在你的子类中,你递归地调用getName()
方法,这会导致内存不足,因此会出现StackOverflowException。
尝试像下面一样打电话。
@Override
public String getName(){
return "Child Class Name is: " + name;
}
答案 2 :(得分:0)
@Override
public String getName()
{
return "Child Class Name is: "+ getName();
}
在此方法中,getName()调用为递归调用。因此,它永远不会结束给予StackOverflowException
答案 3 :(得分:0)
将其更改为Below.Its立即工作
@Override
public String getName()
{
return "Child Class Name is: "+ super.Name;
}