首页 文章

我如何使用多态来创建一个实例化对象然后有效填充ArrayList的方法?

提问于
浏览
-1

我有一个作业,要求我写几个类,现在我终于用main方法编写了这个类 . 以下是此课程的说明:


对于AccountDriver类,创建:

  • 此类的文件名应为:AccountDriver.java .

  • main()方法 .

  • 一个ArrayList,用于存储Savings或Checking类的10个对象 . 使用2%( . 02)储蓄账户费率 . 使用帐号100到109.使用1000到1000的初始余额

  • 一种名为buildSavings()的方法,它通过使用多态来实例化Savings对象 . 此方法应创建一个新的Savings对象,并通过使用构造函数调用填充相应的数据 . 对象的类型应为Account类型,但它们应实例化为Savings(多态)类型 .

  • 想想应该如何测试它 . 设计测试数据,彻底测试类和继承层次结构的功能 . 至少,您应该测试5个对象实例 .

  • 实例化后,此方法应将储蓄帐户存储在上面创建的ArrayList中 . 以升序存储储蓄帐户 .


我已经编写了Account,Checking和Savings类,所有这些类都有两个构造函数,包括默认的(我写的) . 检查和储蓄都扩展了账户 . 帐户有两个受保护的值,accountNum(int)和accountBal(double) . Savings添加了一个名为interestRate的私有双 . 帐户和储蓄有其值的吸气剂和设定者 . 检查和保存有@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?
}

如果有人可以通过给我一个例子来澄清这些奇怪的指示,那就太棒了 . 我也会给老师发电子邮件,但现在是周末,所以我实际上无法上班 .

谢谢

1 回答

  • 0

    虽然有点模棱两可,但是使用的复数多于单数,所以我怀疑你的老师要你在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's documentation或只是谷歌搜索它 .

相关问题