父类既然指向了子类对象,为何不能调通子类特有的方法?

父类既然指向了子类对象,为何不能调通子类特有的方法?

父类既然指向了子类对象,
那么为何不能调通子类特有的方法?

如果说是只能访问编译时范围,
那么为何能使用被子类改别写方法
还有,既然都是引用类型,对象的引用都是指针地址,那父类子类之间交换一下指针为什么还要转换呢?(指针的格式总不会不一样吧)

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

 1、因为声明引用时,使用的是父类类型,到了运行时期,父类中没有定义的方法,JVM也不会去子类中查找,所以是不能调用子类独有的方法的。
2、引用之间交换的最终目的是进行成员的使用,虽然形式上都是地址,但是如果不进行类型转换,编译器是无法定位准确类型的,也就无法执行后续调用操作的。 

如果我的建议解决了你的问题,请采纳,祝学习愉快!

  • 戴耳环的鱼 提问者 #1
    追问一下,1:依你所言,不能调用子类独有方法的根本原因是,只能访问编译时确定的类型范围?那么运行时为什么却能调用被重写的方法?
    2018-04-17 16:30:24
  • 喜欢做梦的鱼 回复 提问者 戴耳环的鱼 #2
    楼上老师的意思是,只能访问编译时确定类型中设定的方法形式,因为子类重写的方法签名与父类是匹配的,所以可以调用
    2018-04-17 17:03:32
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师