【问题标题】:Java - Calling the constructor of a superclass fails [duplicate]Java - 调用超类的构造函数失败[重复]
【发布时间】:2018-03-18 14:44:57
【问题描述】:

这是我设置的一个基本类,用于计算股票收益。 在这里关注“Stock”构造函数:

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 类中的构造函数 Stock 不能应用于给定类型;”

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

【问题讨论】:

    标签: java constructor subclass superclass


    【解决方案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;
    }
    

    【讨论】:

    • 非常感谢!我现在看到了。
    【解决方案2】:

    替换它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; }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 2012-12-17
      • 2013-07-19
      • 2013-10-20
      • 2015-07-02
      相关资源
      最近更新 更多