返回信息流父类classA子类classB
在向上转型 A a=new B();
用instanceof判断a既是A也是B的实例 a可以调在B类中被重载的方法 为什么就不能调用B类中其他的方法呢
a是B的实例,应该就能调用B中所有的方法吧(如果再做一次向下转型就可以调用B中的方法)。
这是一条镜像帖。来源:北邮人论坛 / java / #28886同步于 2014/3/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
关于对象多态性问题
waweiy
2014/3/19镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
重载方法是因为调用的A里面的方法,然后被跳转到B
里面的方法吧。a是A的对象,只能调A中的方法,只不过正好有些方法被B复写了。不知道这样理解对不对。
来自「北邮人论坛手机版」
是不是因为在编译的时候的静态类型是classA 然后就只能调用classA中的方法,然后运行时虽然动态连接到实例classB的实例上,但是却不能在编译的时候就知道classB中的方法的。
至于强制转型后能调用,那是因为你显示的把类型向下转型到了classB中 所以才能调用。
不知道对不对~轻拍哈
正解,就是动态类型和静态类型的问题。
【 在 iakuxgnaw 的大作中提到: 】
: 是不是因为在编译的时候的静态类型是classA 然后就只能调用classA中的方法,然后运行时虽然动态连接到实例classB的实例上,但是却不能在编译的时候就知道classB中的方法的。
: 至于强制转型后能调用,那是因为你显示的把类型向下转型到了classB中 所以才能调用。
: 不知道对不对~轻拍哈