[英]parent child class StackOverflowError exception
我有二等課程
上課
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異常
嘗試這個:
@Override
public String getName(){
return "Child Class Name is: " + super.getName();
}
你的objpeople2.getName()
正在訪問當前類的getName()
,這會導致以遞歸方式調用相同的方法,這就是拋出StackOverFlorError Exception的方式。 使用super
關鍵字來引用當前類的超類。
在您的子類中,您以遞歸方式調用getName()
方法,這會導致內存不足,從而導致StackOverflowException。
試着像波紋管一樣打電話。
@Override
public String getName(){
return "Child Class Name is: " + name;
}
@Override
public String getName()
{
return "Child Class Name is: "+ getName();
}
在此方法中,getName()調用為遞歸調用。 因此,它永遠不會結束調用給出StackOverflowException
的相同方法
將其更改為Below.Its立即工作
@Override
public String getName()
{
return "Child Class Name is: "+ super.Name;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.