qq飞车8.5幸运星宝箱:Java学习

幸运赛车规则 www.cqk4s.cn java,spring,structs,hibernate,jsf,ireport,jfreechart,jasperreport,tomcat,jboss -----本博客已经搬家了,新的地址是 //www.javaly.cn 如果有对文章有任何疑问或者有任何不懂的地方,欢迎到www.javaly.cn (Java乐园)指出,我会尽力帮助解决。一起进步

 

java中创建子类实例怎么调用父类的覆盖方法

问题:

A 为父类,B为子类,都有一个m()方法,
B b=new B();
((A)b).m();
这样为什么还是调用的B类的方法呢
是不是调用父类覆盖方法只能用SUPER呢
还有,事例化一个子类对象后怎么调用父类方法呢
才学,知道的请说下



答案:

B b=new B(); 这种方式,实际上是实例化了子类的对象,注意:内存中还是子类对象。
((A)b).m(); 表面上看起来是父类对象了,但是由于内存中是子类对象,所以调用的还是子类方法。

A b=new B();
b.m();
这种方法和你写的实际是一个效果,虽然上溯造型到了父类,由于子类重写了父类的方法,调用的还是子类的方法(也就是所:方法的实现,最后是在子类中实现的)。

所以,总结如下:
如果子类没有重写父类的方法,调用父类的方法的时候,实际上是去父类的内存中实现,可以调用父类方法。
如果子类重写了父类的方法,那么,你虽然上溯造型到了父类,由于内存还是子类,该方法的实现还是在子类,所以用实例化的对象是调用不到父类的,这种情况下,只能用super关键字。

用static的情况不讨论的情况下不讨论是这样的,不知道到您是否不满意,不满意的话可以发消息继续讨论。


posted on 2009-10-16 09:01 找个美女做老婆 阅读(3092) 评论(2)  编辑  收藏

评论

# re: java中创建子类实例怎么调用父类的覆盖方法 2010-07-22 17:50 ijlusryygy

B b=new B();
Class a=b.getClass().getSuperclass();
((A)a.newInstance()).c();  回复  更多评论   

# re: java中创建子类实例怎么调用父类的覆盖方法 2013-10-08 14:34 ggggggg

不明觉厉@ijlusryygy
  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

公告

本blog已经搬到新家了, 新家:www.javaly.cn
 //www.javaly.cn

常用链接

留言簿(5)

随笔档案

文章档案

搜索

最新评论

阅读排行榜

评论排行榜

  • 日本樱岛火山大规模喷发 烟尘高达4700米 2019-06-04
  • 陕西守艺人丨被《舌尖上的中国》忽略的洛南空心挂面 2019-06-04
  • 专家谈红军遵义整编对军改的启示:扁平化管理 减少指挥层级 2019-05-22
  • 女性之声——全国妇联 2019-05-12
  • 中国科学家给2.2万年前的大熊猫测基因 2019-05-11
  • 有神论跟无神论的差别在哪你都不知道,还要扯啥呢。 2019-05-11
  • 福州五一广场举行“十一”升国旗仪式 2019-05-08
  • 强村带弱村结对共发展 2019-04-07
  • 父亲节,你知道 有几成“男人装”? 2019-03-28
  • 苹果-热门标签-华商生活 2019-03-10
  • “奥运新秀”亮相上海 亚帆联杯等你来看 2019-03-07
  • 蔡奇就历史文化遗产保护调研:把燕都金中都建设保护好 2019-02-23
  • 红曲美的绿盒子,绿色生活大不同 2019-02-23
  • 理发迎接世界杯 梅西粉丝将偶像笑脸“抛在脑后” 2018-11-26
  • 我省各类创业孵化载体累计“毕业”企业3054家 2018-11-26
  • 152| 926| 941| 652| 265| 755| 774| 854| 574| 258|