日期:2014-05-20  浏览次数:20615 次

java 抽象类相关的问题
我创建了抽象类Employee 以及他的子类FullTimeEmployee ,PartTimeEmployee. 现在用一个混合类型的数组 Employee[] EmployeeList 实例化了若干对象。我要根据EmployeeList[i]的具体不同类型来调用不同的函数,要将原先的Employee 强制转换为FullTimeEmployee 或者PartTimeEmployee 吧 ,但是怎么不对呢?

------解决方案--------------------
用instanceof判断下
------解决方案--------------------
你是调用EmployeeList[i]内部的函数,还是作为参数传递给方法?
如果你的方法写的比较通用的话,就无所谓啦,方法里面用反射获取对象里面具体值,然后做相应处理,不一定非要知道对象是啥。

或者你用LS说的,用instanceof来判断是否具体的某种类型也可以。
------解决方案--------------------
你把item强制转换后又赋值给item,但是item还是父类对象啊!
你应该item强制转换后赋值个你转换的对象类型啊

应该是吧 
item = (FullTimeEmployee) item;
System.out.println("annual pay is :" + item.getAnnualSalary());//这里的item不还是employee的对象吗

改为
FullTimeEmployee item1 = (FullTimeEmployee) item;
System.out.println("annual pay is :" + item1.getAnnualSalary());

建议这样的问题还是用多肽来实现吧
------解决方案--------------------
通过调用目标类类型
instanceof 这个不行吧,这个都会满足。
你通过对比目标Class类类型