设计一个Stock类和DividendStock类 - 编写了一个表示拥有股票情况的Stock类,这里给出了一个简化版,去掉了对参数的合法性的检查等细节:

85 阅读2分钟

不要自卑,去提升实力
互联网行业谁技术牛谁是爹
如果文章可以带给你能量,那是最好的事!请相信自己
加油o~

在这里插入图片描述

设计一个Stock类和DividendStock类

  • 编写了一个表示拥有股票情况的Stock类,这里给出了一个简化版,去掉了对参数的合法性的检查等细节:
  • 现在,需要创建一个可以发放分红的股票。红利的多少和持有股票的数量成正比。不是所有的股票都会分红。所以不能直接在Stock类上直接增加这个功能。而是应该在Stock类的基础上,继承一个DividendStock类。并在这个子类中增加分红的属性和行为。
  • (1).一个用于记录分红的字段dividents
  • (2).重写父类的getProfit方法(在父类的getProfit方法的基础上还要加上分红的)
    父类的getProfit+股票的总的分红(也就是字段dividents的值)
  • (3). 增加计算分红的方法,方法中的参数表示每股的红利,可以理解为成员变量dividents赋值: 股票的总的分红=每股的红利*总股数
    public void payDividend(double amountPerShare)
  • 编写一个测试程序,创建一个名为”Oracle”的分红股票,先后以单价32元购买200股,以单价40元购买350股。每股分红2.8元。这支股票的当前价格是每股50元。

以下代码仅供参考
以下代码仅供参考
以下代码仅供参考

/**
 *作者:魏宝航
 *2020年11月22日,下午15:40
 */
public class test {
    public static void main(String[] args) {
            DividendStock oracle = new DividendStock("Oracle");
            oracle.purchase(200,32);
            oracle.purchase(350,40);
            oracle.payDividend(2.8);
            System.out.println(oracle.toString());
            System.out.println(oracle.getProfit(50));
    }
}

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

        }
    // Initializes a new Stock with no shares purchased.
    public Stock(String theSymbol) {
        symbol = theSymbol;
        totalShares = 0;
        totalCost = 0.0;
    }

    // Returns the total shares purchased of this stock.
    public int getTotalShares() {
        return totalShares;
    }

    // Returns the total profit or loss earned on this stock.
    public double getProfit(double currentPrice) {
        double marketValue = totalShares * currentPrice;
        return marketValue - totalCost;
    }

    // Records purchase of the given shares at the given price.
    public void purchase(int shares, double pricePerShare) {
        totalShares += shares;
        totalCost += shares * pricePerShare;
    }

    @Override
    public String toString() {
        return "Stock [symbol=" + symbol + ", totalShares=" + totalShares + ", totalCost=" + totalCost + "]";
    }
//getter和setter方法自己补充

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

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

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

        public double getTotalCost() {
                return totalCost;
        }

        public String getSymbol() {
                return symbol;
        }
}
class DividendStock extends Stock{
        double dividents;
        public DividendStock(String symbol){
                super(symbol);
        }
        @Override
        public double getProfit(double currentPrice) {
                return super.getProfit(currentPrice)+dividents;
        }

        public void payDividend(double amountPerShare){
                dividents=super.getTotalShares()*amountPerShare;
        }

        @Override
        public String toString() {
                return "Stock [symbol=" + super.getSymbol() + ", totalShares=" + super.getTotalShares() + ", totalCost=" + super.getTotalCost() +", dividents="+dividents+ "]";
        }
}