2013-01-11 24 views
1

我有兩個班在學校包父子類StackOverflowError異常

學校類

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方法正在fine.When我試圖用第二個產生異常。

objpeople2.getName()正在產生java.lang.StackOverflowError的例外

回答

2

試試這個:

@Override 
public String getName(){ 
    return "Child Class Name is: " + super.getName(); 
} 

objpeople2.getName()正在訪問當前類,這會導致調用同一個方法遞歸那的getName()方式StackOverFlorError異常被拋出。使用super關鍵字來引用當前類的超類。

1

在您的子類中,您正在遞歸地調用getName()方法,這會導致內存不足,因此會導致StackOverflowException。

嘗試打電話像波紋管。

@Override 
public String getName(){ 
    return "Child Class Name is: " + name; 
} 
+0

謝謝你的答覆我想通了非常感謝 – ArrayOutOfBound

0
@Override 
public String getName() 
{ 
return "Child Class Name is: "+ getName(); 
} 

在該getName()方法調用作爲遞歸調用。因此,它永遠不會結束相同方法的調用它給人StackOverflowException

0

改變了它作爲現在工作Below.Its

@Override 
public String getName() 
{ 
return "Child Class Name is: "+ super.Name; 
}