if(obj instanceof A){A a1=(A)obj},obj已经是类A或A子类B的实例,还要强制转换?1.obj是A实例:A a1=(A)obj还强制转换不是多余吗?2.obj是A子类B实例:那么B继承A,B也可以用A中的属性、方法之类的,为什么还要强制转换?
那你的意思是“A a1=(A)obj”不能自转(这个我知道需强制),但obj已经具体到A或B了(obj instanceof A)他虽然是Object中的,但他不止步于Object,已经是本类(A)或子类(B)中的了,||不存在下转||,就好比A a1=(A)a2,a2是A中的了,强转不是多余???
追答因为你引用的类型是Object。对象实例的类型是根据引用的类型来判断的。java不支持根据实例的真正类型进行乡下转型。记住,是java不支持,不是多此一举!
追问就是说虽然确定了是A或B类的,但是他是Object obj引进的实例,还是要由Object型下转到A型?是这样吗?