小编skt*_*sus的帖子

堆栈溢出在子类的构造函数中出错

我的超级课程是:

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"的问题.但是删除它仍然会在运行时导致错误.我觉得他们的子类构造函数中的代码结构存在问题,但我不确定究竟是什么.我试图用原始变量创建更高的对象,但无济于事. …

java stack-overflow inheritance

1
推荐指数
1
解决办法
106
查看次数

标签 统计

inheritance ×1

java ×1

stack-overflow ×1