我如何区分超类数组中的不同子类?

问题描述 投票:0回答:2

我的设置如下。我有一个称为“瓶”的超类,还有两个不同的子类:“水”和“苏打水”。有一个无数的数组,我的目标是编写一个仅返回这些子类之一的总升值的方法。做到这一点的最佳方法是什么?据我了解,“ instanceof”在这里没有用。

为了澄清,我只想知道用于比较的运算符/方法:

if (bottles[0]==soda){
      ...
}
java arrays subclass superclass instanceof
2个回答
0
投票

IIRC,instanceof仍然有效。

但是,如何将计数标准的逻辑放入子类方法中呢?因此,如果您想计算瓶装甜饮料的升数,则水应该返回0,而苏打水应该返回真正的升。由于子类本身了解最好,所以最好让它们直接给您答案。不要破坏封装。


0
投票

if(bottles[i] instanceof Soda)

© www.soinside.com 2019 - 2024. All rights reserved.