超类的对象变成了arraylist?

时间:2011-12-31 11:33:10

标签: java

我正在学习Java,我遇到了一些我无法理解或解决的问题!我刚刚学习了继承和抽象方法。所以我做了一个超级类,我称之为Account,然后是两个子类,我称之为savingsAccount和creditAccount。我还将子类的对象放在两个单独的arraylist中。

但是现在我必须改变它,因为我的老师要我创建一个帐户对象并将其放入arraylist并从该列表中到达savingsAccount对象和creditAccount对象,而不是有两个单独的列表。

但是当我读到关于absract类和方法时,似乎你无法创建一个抽象超类的对象!?那么我该如何创建一个帐户对象并仍然使用抽象方法呢?感谢帮助!谢谢!

3 个答案:

答案 0 :(得分:4)

继承用于定义is-a关系。 SavingsAccount 帐户,CreditAccount 帐户。因此,由于List<Account>用于包含Account,而CreditAccount或SavingsAccount 帐户,因此您可以将这两个类的实例添加到List<Account>中:

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

当您从列表中获取帐户(例如Account a = list.get(0))时,此帐户将是CreditAccount或SavingsAccount,并且调用抽象方法将调用子类中定义的方法的实现

答案 1 :(得分:2)

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

即使Account是抽象的,也能正常工作。

答案 2 :(得分:2)

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

它可以工作 - 你可以在这里添加两个子类,但不能添加Account对象 - 因为它们是荒谬的,无法创建