如何区别子类和父类

bdcode 2012-02-09 02:32:14
现有一个arraylist。里面存有若干个Item对象和DiscountedItem对象。DiscountedItem类是Item类的子类。

Item类和DiscountedItem类都有字段price。而DiscountedItem购买10以上会有优惠,所以item对象和DIscountedItem对象计算价格的方法不同。

求arraylist里所有对象的价格的总和。

我的思路是:

for(int i = 0; i < arraylist.size(); i++) {
if(arraylist.get(i)是item类){
省略.................................
}

if(arraylist.get(i)是DiscountedItem类){
省略.................................
}
}

现在问题是,不知道用什么方法判断循环中arraylist.get(i)是item类还是DiscountedItem类。
...全文
341 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
幽饮烛 2012-02-09
  • 打赏
  • 举报
回复
参考 API 中 Class 类的 equals 方法
wslzxql 2012-02-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zt4030612 的回复:]
if(arraylist.get(i).getClass.getName().equery( item类)){}
if(arraylist.get(i).getClass.getName().equery( DiscountedItem))
[/Quote]这个instanceof都可以用
bdcode 2012-02-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 bdcode 的回复:]

引用 2 楼 soli11722984 的回复:

instanceof


我是希望区别子类(DiscountedItem)和父类(Item)
不是判断一个对象是不是某个类的实例或者子类。
[/Quote]

哦,我知道了。用

arraylist.get(i) instaceof DiscountedItem

判断就可以了。true意味着当前对象是DiscountedItem的实例。false意味着当前对象是Item的实例。thank u.
bdcode 2012-02-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 soli11722984 的回复:]

instanceof
[/Quote]

我是希望区别子类(DiscountedItem)和父类(Item)
不是判断一个对象是不是某个类的实例或者子类。
zt4030612 2012-02-09
  • 打赏
  • 举报
回复
if(arraylist.get(i).getClass.getName().equery( item类)){}
if(arraylist.get(i).getClass.getName().equery( DiscountedItem))
jiang91200 2012-02-09
  • 打赏
  • 举报
回复
同上。。。
爱摸鱼de老邪 2012-02-09
  • 打赏
  • 举报
回复
用instanceof判断
soli11722984 2012-02-09
  • 打赏
  • 举报
回复
instanceof
wslzxql 2012-02-09
  • 打赏
  • 举报
回复
用反射机制可不可以呢,要不然就在这两个类里加一个变量,0表示父类,1表示子类

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧