我的超级课程是:
public abstract class MarketProduct {
private String name;
public MarketProduct(String productName) {
name = productName;
}
public final String getName() {
return this.name;
}
public abstract int getCost();
public abstract boolean equals(Object o);
}
Run Code Online (Sandbox Code Playgroud)
而我的子类(直到它的构造函数)是:
public class Egg extends MarketProduct {
private int numEggs;
private int priceEggs;
public Egg(String productName, int numRequired, int priceEggsDozen) {
super(productName);
numEggs = numRequired;
priceEggs = priceEggsDozen;
MarketProduct marketProductEgg = new Egg(productName, numEggs, priceEggs);
}
Run Code Online (Sandbox Code Playgroud)
我在Egg.init(Egg.java:9)得到一个java.lang.StackOverflowError.在这种情况下,第9行是子类中构造函数的最后一行,即:
MarketProduct marketProductEgg = new Egg(productName, numEggs, priceEggs);
Run Code Online (Sandbox Code Playgroud)
我知道当递归方法不断调用时会出现堆栈溢出错误.所以我认为在超类的getName方法中可能存在"this"的问题.但是删除它仍然会在运行时导致错误.我觉得他们的子类构造函数中的代码结构存在问题,但我不确定究竟是什么.我试图用原始变量创建更高的对象,但无济于事. …