簡體   English   中英

父子類StackOverflowError異常

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM