父类引用子类对象 转换及与多态的关系

GUI007 2012-01-08 10:50:29
对象转型中,父类引用类型变量可以指向子类对象但是不能访问子类对象新增加的成员(属性和方法),但是在多态中,为什么又是可以访问重新的方法的呀??

重写的方法与子类新增加的方法有什么区别呢??

是不是这个概念呢,虽然子类重写的父类的方法,但是不属于新增方法么??
...全文
150 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lliiqiang 2012-01-09
  • 打赏
  • 举报
回复
系统动态判断方法覆盖
Artist Coder 2012-01-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gui007 的回复:]

我的意思说,方法重写,父类方法的代码 、子类方法的代码应该都是CODE seg 区域的吧
只是说父类中的对方法的指向变了,是这个概念呢??

并且在多态中是可以调用子类重写的方法的,讲个天真点问题,如果我能让其他方法的指向也变了,那我是不是子类新增的方法我就可以使用了呢?
[/Quote]
不存在指向这么一说吧,5楼的解释很形象,只是父类引用调用方法的时候,如果子类方法有重写父类方法,会自动去调用子类的方法而不是父类的方法。
0xfather 2012-01-09
  • 打赏
  • 举报
回复
这就是方法重写的作用,其实在指向了子类之后,其实使用的是子类对象,而子类要调用父类的方法就需要先重写父类的方法,然后才能使用重载的方式再添加相同名称的方法,这就是多态了
Ciffer 2012-01-09
  • 打赏
  • 举报
回复
调用是通过引用(父类)去调用内存块中的对象(子类),父类中并没有子类扩展的方法。
通俗的的讲:引用是遥控器,对象是电视机。 虽说电视机有很多功能,但你遥控上没有那么多对应的按钮,一样是没用的。
GUI007 2012-01-08
  • 打赏
  • 举报
回复
我的意思说,方法重写,父类方法的代码 、子类方法的代码应该都是CODE seg 区域的吧
只是说父类中的对方法的指向变了,是这个概念呢??

并且在多态中是可以调用子类重写的方法的,讲个天真点问题,如果我能让其他方法的指向也变了,那我是不是子类新增的方法我就可以使用了呢?

Artist Coder 2012-01-08
  • 打赏
  • 举报
回复
[Quote=引用楼主 gui007 的回复:]
对象转型中,父类引用类型变量可以指向子类对象但是不能访问子类对象新增加的成员(属性和方法),但是在多态中,为什么又是可以访问重新的方法的呀??

重写的方法与子类新增加的方法有什么区别呢??

是不是这个概念呢,虽然子类重写的父类的方法,但是不属于新增方法么??
[/Quote]
ps:如果方法签名一样,那么子类的这个方法就会覆盖父类中相同的方法,调用的时候还是可以调用的。
Artist Coder 2012-01-08
  • 打赏
  • 举报
回复
重写的方法的方法签名一定要和父类的方法完全一样,如果方法签名不一样,就属于新增的方法,
方法的签名包括方法名、方法参数列表

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧