我正在为我的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();
}
}