如何使用多态性来创建一个实例化对象的方法,然后用它们有效地填充ArrayList



我有一个作业需要我写几个类,现在我终于用其中的main方法写了这个类。下面是这个类的说明:


对于AccountDriver类,创建:

  1. 这个类的文件名应该是:AccountDriver.java
  2. main()方法
  3. 一个ArrayList,用于存储Savings或Checking类的10个对象。使用2%(.02)储蓄账户利率。使用账号100到109。使用1000到
  4. 一个名为buildSavings()的方法,通过使用多态性。此方法应创建一个新的Savings对象并填写相应的数据通过使用构造函数调用。对象的类型应为Account类型,但应为实例化为类型Savings(多态)
  5. 想想应该如何测试。设计测试数据,彻底测试类和继承层次结构。至少,您应该测试5个对象实例化
  6. 实例化后,此方法应将储蓄帐户存储在上面创建的ArrayList中。按升序存储储蓄帐户

我已经编写了Account、Checking和Savings类,所有这些类都有两个构造函数,包括默认构造函数(我已经编写好了)。支票和储蓄都扩展了账户。Account有两个受保护的值,accountNum(int)和accountBal(double)。储蓄增加了一种私人双重利率。Account和Savings的价值观有getter和setter。Checking和Savings有@Override(对我来说是一个新概念)toString方法。它们真的很简单。

现在我对这个AccountDriver类有问题,因为我应该做的所有事情都是新的。

我想从创建buildSavings()方法开始,但创建一个类型为Account但实例化为Savings的对象的说明真的很奇怪。我以前从来没有这样做过,我不明白我该怎么写——也许用instanceOf?这对我来说也是新鲜事。

我还对需要放入Savings对象的所有信息都包含在ArrayList指令中这一事实感到困惑,所以我只写了以下内容:

ArrayList<Savings> savingsAccount = new ArrayList<>();

但我不认为现在是这样,因为我应该制作这个buildSavings()方法。那么,在制作ArrayList时,我会调用那个方法吗?还是在我创建ArrayList之后是这样?使用.add将对象添加到ArrayList时,是否使用buildSavings()方法?

这就是我为buildSavings()方法所能收集到的全部内容。我显然不知道多态性是如何工作的,我的书也不清楚任何特定的语法。

    public Account buildSavings () {
    Savings account = new Savings (100, 0.2);
    // what will I be returning? Why can't I put a for loop here to fill up the objects?
    // The two parameters are 100 (accountNum) and 0.2 (interest rate). How do I 
    // set the account balance when the default constructor takes no parameters and
    // the instructions specify that the second contructor only take the account number and
    // interest rate as parameters?
} 

如果有人能给我举个例子来澄清这些奇怪的指示,那就太好了。我也会给我的老师发电子邮件,但现在是周末,所以我不能真正去上班。

感谢

虽然有点模糊,但方向使用的复数多于单数,所以我怀疑你的老师希望你在buildSavings方法中创建数组。类似这样的东西:

ArrayList<Account> accounts = new ArrayList();
for (int i = 100; i <= 109; ++i) {
    accounts.add(new Savings(i, 0.2));
}
return accounts;

Savings类满足Account类的所有要求,这就是为什么可以在需要Account类的任何地方使用Savings类。请注意,反之亦然的论点不成立。储蓄类具有Account类没有的利率。要了解更多关于多态性的信息,您可以查看oracle的文档或简单地在谷歌上搜索。

最新更新