首先,我特别需要使用instanceof运算符。我有一个基类Account和一个扩展Account的CheckingAccount。我有一个ArrayList帐户;一个是基本帐户,一个是CheckingAccount,一个是SavingsAccount。我需要遍历ArrayList并调用CheckingAccount类唯一的方法。这是我的for循环:

    for ( Account a : accounts) {
        if (a instanceof CheckingAccount) {
            System.out.println(a.toString()+" "+a.getOverdraftLimit()+" ");
        }
    }


a.getOverdraftLimit给我的错误是没有为Account类型定义getOverdraftLimit。我的ArrayList是由Account引用构建的。有没有一种方法可以直接在调用中使用instanceof运算符? CheckingAccount的实例a.getOverdraftlimit?

最佳答案

您已经检查了它是否为CheckingAccount,但是您仍然具有类型为Account-a的引用变量。

将其强制转换为CheckingAccount,以便可以调用特定于该类的方法。

if (a instanceof CheckingAccount) {
    System.out.println(a.toString()+" "+((CheckingAccount) a).getOverdraftLimit()+" ");
}


面向对象的方法如下:

覆盖toString()中的CheckingAccount。让该方法作为返回的字符串的一部分返回透支额度,这样就不必将Account强制转换为CheckingAccount只是为了调用getOverdraftLimit

07-24 09:37