2011-12-31 95 views
2

我正在學習Java,我有一個我無法理解或解決的問題!我剛剛瞭解了繼承和抽象方法。所以我完成了一個叫做Account的超類,然後是兩個我稱之爲savingsAccount和creditAccount的子類。我也將子類的對象放入兩個單獨的數組列表中。超類的對象到arraylist?

但是現在我必須改變它,因爲我的老師希望我創建一個帳戶對象,並將其放入一個數組列表中,並從該列表中獲取savingsAccount對象和creditAccount對象,而不是使用兩個單獨的列表。

但是當我閱讀absract類和方法,似乎你不能創建一個抽象的超類的對象!?那麼我應該如何創建一個帳戶對象並仍然使用抽象方法?幫助表示讚賞!謝謝!

回答

4

繼承使用定義is-a關係。一個SavingsAccount 帳戶,和CreditAccount 帳戶。因此,由於List<Account>用於包含Account S和A CreditAccount或SavingsAccount 帳戶,您可以添加兩個類的實例爲List<Account>

Account a = new CreditAccount(); 
list.add(a); 

時,你會得到從一個帳戶列表(Account a = list.get(0)例如),此帳戶將或者一個CreditAccount或SavingsAccount,並調用一個抽象方法將調用子類中定義的方法的實施。

+0

+1。我打算髮表一個答案,因爲其他兩個沒有詳細說明,但這很好地覆蓋了地面。 – Perception 2011-12-31 11:48:12

+0

+1我投了贊成票,即使我有一個相互競爭的答案。工作很好。 – 2011-12-31 11:50:12

+0

不錯!但是,我將如何處理幾個客戶?客戶可以擁有多個不同的賬戶。而且我也想知道如何獲得ans的值給子類中的方法? – 2011-12-31 11:59:08

2
List<Account> accountList = new ArrayList<Account>(); 

即使Account是抽象的,也可以工作。

+0

謝謝!當我運行此命令時,出現如下找不到符號的錯誤:列表 accountList = new ArrayList (); – 2011-12-31 11:41:16

+0

確保您已爲java.util.List和java.util.ArrayList導入。 – 2011-12-31 11:42:51

+0

我錯過了java.util.List – 2011-12-31 11:48:26

2

嘗試

List<Account> accounts = new ArrayList<Account>(); 

,將工作 - 你可以同時添加你的子類在這裏的,但不能添加帳戶對象 - 因爲它們是absract,不能創建

+0

謝謝!嗯,有點難以理解這一點!所以我不創建帳戶的對象?!但是,如何在列表中傳遞並獲取SavingsAccount和CreditAccounts的方法? – 2011-12-31 11:47:57

+0

您的每個特定帳戶(子類)都是「帳戶類」。如果您需要檢查是否'賬戶了'是SavingsAccount'或'CreditAccounts'使用'如果(一個incatanceof CreditAccounts)的'型{}否則{}' – dantuch 2011-12-31 12:08:12

+0

@ 3D-kreativ閱讀我的意見,問他是否需要了解更多 – dantuch 2011-12-31 12:22:40