Java-子类和超类关系

问题描述

我正在为我的Java课程做作业,但我完全迷路了。我想我不完全了解子类和超类的关系,但是我正在竭尽全力。作业要求我们这样做:

Stock.java类表示给定股票的购买股票。您要为要支付股息的股票创建一种对象。

每个股东获得的股利数量与该人拥有的股票数量成正比。并非每只股票都会派发股息,因此您不希望将此功能直接添加到Stock类。相反,您应该创建一个名为DividendStock的新类,该类扩展Stock并添加此新行为。

每个DividendStock对象将继承Stock超类的交易品种,总股本和总成本。您将需要添加一个字段来记录已支付的股息金额。

已记录的股利支付应视为股东的利润。 DividendStock的总利润等于股票价格加上任何股息的利润。该金额的计算方法是:市值(股票数量乘以当前价格)减去已支付的股票总成本加上已付的股息金额。

这是stock.java文件

/**
 * A Stock object represents purchases of shares of a 
 * company's stock.
 *
 */


public class Stock {
    
    private String symbol;
    private int totalShares;
    private double totalCost;
    
    /**
     * Initializes a new Stock with no shares purchased
     * @param symbol = the symbol for the Trading shares
     */
    public Stock(String symbol) {
        this.symbol = symbol;
        totalShares = 0;
        totalCost = 0.0;
    }
    


    /**
     * Returns the total profit or loss earned on this stock
     * @param currentPrice = the price of the share on the stock exchange
     * @return
     */
    public double getProfit(double currentPrice) {
        double marketValue = totalShares * currentPrice;
        return marketValue - totalCost;
    }
    
    /**
     * Record purchase of the given shares at the given price
     * @param shares = the number of shares purchased
     * @param pricePerShare = the price paid for each share of stock
     */
    public void purchase(int shares,double pricePerShare) {
        totalShares += shares;
        totalCost += shares * pricePerShare;
    }

    public String getSymbol() {
        return symbol;
    }

    public void setSymbol(String symbol) {
        this.symbol = symbol;
    }

    public int getTotalShares() {
        return totalShares;
    }

    public void setTotalShares(int totalShares) {
        this.totalShares = totalShares;
    }

    public double getTotalCost() {
        return totalCost;
    }

    public void setTotalCost(double totalCost) {
        this.totalCost = totalCost;
    }
    

}

我已经开始研究名为DividendStock.java的子类,但是我不确定我缺少什么以及我需要做些什么来实际测试其是否工作。有人有提示吗?

public class DividendStock extends Stock{
    private double dividends;
    private double profit;
    

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

    public double payDividend(double amountPerShare){
        dividends += amountPerShare*getTotalShares();
        return dividends;
    }
    
    public double profit(double amountPerShare) {
        profit = super.getProfit(profit) + payDividend(amountPerShare);
        return profit;
    }
}

解决方法

一个提示,如果您不了解它,请使其简单易懂,这样您就可以最好地学习它。这是一个适合您的工作示例。

class MySuperClass {
    protected String whoami;
    
    MySuperClass() {
        this.whoami = "I'm the Superclass";
    }
    
    void whoAmI() {
        System.out.println(whoami);
    }
}

class MySubClass extends MySuperClass {
    MySubClass() {
        super.whoami = "I'm the Subclass";
    }
}

public class TestWorld {
    public static void main(String[] args) {
        MySuperClass bigbro = new MySuperClass();
        MySubClass littlesis = new MySubClass();
        
        bigbro.whoAmI();
        littlesis.whoAmI();
    }
}