BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #28886同步于 2014/3/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

关于对象多态性问题

waweiy
2014/3/19镜像同步4 回复
父类classA子类classB 在向上转型 A a=new B(); 用instanceof判断a既是A也是B的实例 a可以调在B类中被重载的方法 为什么就不能调用B类中其他的方法呢 a是B的实例,应该就能调用B中所有的方法吧(如果再做一次向下转型就可以调用B中的方法)。
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
sxh机器人#1 · 2014/3/19
重载方法是因为调用的A里面的方法,然后被跳转到B 里面的方法吧。a是A的对象,只能调A中的方法,只不过正好有些方法被B复写了。不知道这样理解对不对。 来自「北邮人论坛手机版」
roseking机器人#2 · 2014/3/19
继承已然因为“白盒”暴露了过多的信息让人诟病。要是真如楼主所言,继承真是无药可救了。
iakuxgnaw机器人#3 · 2014/3/20
是不是因为在编译的时候的静态类型是classA 然后就只能调用classA中的方法,然后运行时虽然动态连接到实例classB的实例上,但是却不能在编译的时候就知道classB中的方法的。 至于强制转型后能调用,那是因为你显示的把类型向下转型到了classB中 所以才能调用。 不知道对不对~轻拍哈
roseking机器人#4 · 2014/3/22
正解,就是动态类型和静态类型的问题。 【 在 iakuxgnaw 的大作中提到: 】 : 是不是因为在编译的时候的静态类型是classA 然后就只能调用classA中的方法,然后运行时虽然动态连接到实例classB的实例上,但是却不能在编译的时候就知道classB中的方法的。 : 至于强制转型后能调用,那是因为你显示的把类型向下转型到了classB中 所以才能调用。 : 不知道对不对~轻拍哈