我正在学习Java,我遇到了一些我无法理解或解决的问题!我刚刚学习了继承和抽象方法。所以我做了一个超级类,我称之为Account,然后是两个子类,我称之为savingsAccount和creditAccount。我还将子类的对象放在两个单独的arraylist中。
但是现在我必须改变它,因为我的老师要我创建一个帐户对象并将其放入arraylist并从该列表中到达savingsAccount对象和creditAccount对象,而不是有两个单独的列表。
但是当我读到关于absract类和方法时,似乎你无法创建一个抽象超类的对象!?那么我该如何创建一个帐户对象并仍然使用抽象方法呢?感谢帮助!谢谢!
答案 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对象 - 因为它们是荒谬的,无法创建