簡體   English   中英

我可以在超類的數組上調用子類嗎?

[英]can I call subclasses on an array of a superclass?

如果我有一個包含子類的對象的數組,是否可以通過調用該數組來訪問子類中的方法?

這是銀行類中的一種方法,我想設置檢查:

public void deposit() throws IOException {
BufferedReader br;
String entered_amount;

System.out.print("How much would you like to deposit? :");
br = new BufferedReader(new InputStreamReader(System.in));
entered_amount = br.readLine();
double amount = Double.valueOf(entered_amount).doubleValue();
balance = balance + amount;

System.out.println("Your balance is: " + getBalance());

這是我的Checking課:

public class Checking extends Bankaccount {

private double balance;

public Checking() {
}

public Checking(double balance) {
    this.balance = balance;
}

/**
 * @return the balance
 */
public double getBalance() {
    return balance;
}

/**
 * @param balance the balance to set
 */
public void setBalance(double balance) {
    this.balance = balance;
}

}

在我的主類中調用baArray[0] ,是否有一種方法可以使存款設置支票類中的余額值?

我這樣做的原因是因為我正在將對象數組寫到文件中,並在程序啟動時重新讀取它們。 我需要能夠存儲3套支票和儲蓄。 我的存款方法將是我嘗試編輯以使用繼承設置支票余額的方法。

添加到您的Banking課程:

public abstract setBalance(double balance);

如果除了setBalance方法沒有意義的Checking類之外,還有Banking subclasses ,則可以實現該方法,並使其簡單地引發異常。 (對於Savings類,雖然也有setBalance方法似乎setBalance 。)

或者,您可以將CheckingsetBalance方法移至超類Banking ,然后CheckingSavings都將繼承setBalance方法。 如果您需要覆蓋它們,可以沒有問題。

編輯:根據對此答案的評論,現在對我來說更清楚了您要完成的工作。

如果您打算有一組Banking對象,並且每個對象都有一個唯一的帳號,並且對於每個Bank帳戶,都有一個Checking帳戶和一個Savings帳戶,那么從邏輯上講,聽起來對於Checking來說更有意義和Savings是只能通過Banking類訪問的private類。

因此,當帳戶持有人去銀行時,他們會開設一個Banking帳戶。 也許默認情況下,它帶有1個Checking帳戶和1個Savings帳戶。 這些將是您的Banking類中的類變量:

private Checking checking;
private Savings savings;

現在,您的Banking類需要公共方法來訪問支票帳戶和儲蓄帳戶。

假設您的Checking and Savings類都具有getBalancesetBalance 現在,您的Banking類將為每種類型的帳戶都需要一個settergetter ,它只是調用適當的方法。

例如,在您的Banking課程中:

public void setCheckingBalance(double balance)
{
    checking.setBalance(balance);
}

public double getCheckingBalance()
{
    return checking.getBalance();
}

然后在您的主要方法中,將通過以下方式使用這些方法:

baArr[0].setCheckingBalance(100.00);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM