2011-12-31 11 views
2

私はJavaを学んでいますが、私は理解できない、または解決できないという問題があります。私は、継承と抽象メソッドについて学んだばかりです。そこで、私はAccountと呼んでいるスーパークラスを実行してから、savingsAccountとcreditAccountという2つのサブクラスを作成しました。私はまた、サブクラスのオブジェクトを別々の2人のarraylistに入れました。arraylistへのスーパークラスのオブジェクト?

私は先生が私にアカウントオブジェクトを作成し、それをarraylistに入れ、2つの別々のリストを持たずにsavingsAccountオブジェクトとcreditAccountオブジェクトに到達させたいので、変更する必要があります。

しかし、私はabsractクラスとメソッドについて読んでいるとき、あなたは抽象スーパークラスのオブジェクトを作成することはできないようです!だから私はどのようにアカウントのオブジェクトを作成し、抽象メソッドを使用する必要がありますか?ヘルプは高く評価されています!ありがとう!

答えて

4

を作成することはできませんよう

+0

+1。他の2人は詳しくは触れていないので、私は答えを投稿しようとしていましたが、これはうまく地面をカバーしています。 – Perception

+0

+1私は競合する回答があってもそれに投票しました。よくやった。 –

+0

ニース!しかし、私はいくつかの顧客をどのように扱うだろうか?お客様は複数の異なるアカウントを持つことができます。また、サブクラスのメソッドに値を設定するにはどうすればいいでしょうか? –

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

Accountが抽象であっても動作します。 あなたがここにをあなたのサブクラスの両方を追加できますが、Accountオブジェクトを追加することはできません - - 彼らはabsractであり、継承が使用されている

+0

ありがとうございます!私はこれを実行するとシンボルを見つけることができないようなエラーが出る:リスト accountList = new ArrayList (); –

+0

java.util.Listおよびjava.util.ArrayListのインポートがあることを確認してください。 –

+0

私はjava.util.Listを見逃しました –

2

は、それが動作します

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

を試してみてくださいis-aの関係を定義します。 A SavingsAccount はアカウントで、クレジットアカウントはアカウントでです。だから、List<Account>以来Account Sを含むために使用され、そしてCreditAccountまたはSavingsAccount あなたはList<Account>に両方のクラスのインスタンスを追加することができ、アカウントです:あなたはからアカウントを取得します場合は

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

例えば、リスト(Account a = list.get(0))の場合、このアカウントはCreditAccountまたはSavingsAccountになり、抽象メソッドを呼び出すと、サブクラスで定義されているメソッドの実装が呼び出されます。

+0

ありがとう!うーん、少しこれを理解することは難しい!だから私はアカウントのオブジェクトを作成していないんですか?しかし、リスト内のSavingsAccountとCreditAccountsのメソッドを渡して到達するにはどうすればよいですか? –

+0

あなたの特定のアカウント(サブクラス)は、それぞれ「アカウントクラス」です。もしあなたが 'Account a'が' SavingsAccount'や 'CreditAccounts'のタイプであるかどうかを確認する必要がある場合は、' '@ {{CreditAccounts {{incatanceof CreditAccounts}} 'を使用するかどうかを確認する必要がある場合は – dantuch

+0

@ 3D-kreativ @ – dantuch

関連する問題