Java - 调用超类的构造函数失败

时间:2018-03-18 14:44:57

标签: java constructor subclass superclass

这是我设定的基本课程,用于计算股票收益。 关注这里的“股票”构造函数:

public class Stock{
    private String symbol;
    private int totalShares;
    private double totalCost;

    public void Stock(String symbol){
        this.symbol = symbol;
        totalShares = 0;
        totalCost = 0.0;
    }

    public double getProfit(double currentPrice){
        double marketValue = totalShares * currentPrice;
        return marketValue - totalCost;
    }

    public void purchase(int shares, double pricePerShare){
        totalShares += shares;
        totalCost += shares*pricePerShare;
    }

    public int getTotalShares(){
        return totalShares;
    }
}

我创建了一个名为DividendStock的子类,它应该用来计算股息收入。

public class DividendStock extends Stock{
    private double dividends;

    public DividendStock(String symbol){
        super(symbol);
        dividends = 0.0;
    }

    public void payDividend(double amountPerShare){
        dividends += amountPerShare*getTotalShares();
    }
}

这个类的构造函数不允许我调用超类的构造函数:super(symbol); 错误信息如下:“类库存中的构造函数Stock不能应用于给定类型;”

我已经找到了解决方案,但似乎一切都已到位。 任何想法为什么它不允许我调用这个构造函数?

2 个答案:

答案 0 :(得分:5)

构造函数没有任何返回类型。当你输入返回类型时,它将是一种常规方法。

public void Stock(String symbol) {
    this.symbol = symbol;
    totalShares = 0;
    totalCost = 0.0;
}

应该是

public Stock(String symbol) {
    this.symbol = symbol;
    totalShares = 0;
    totalCost = 0.0;
}

答案 1 :(得分:1)

将其替换为public void Stock(String symbol){ this.symbol = symbol; totalShares = 0; totalCost = 0.0; }

public Stock(String symbol){ this.symbol = symbol; totalShares = 0; totalCost = 0.0; }