首先,我特别需要使用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
。