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();
}
}

最新更新