A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我叫MT 中级黑马   /  2014-2-15 23:07  /  1102 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package com.itheima;

  2. /**
  3. * @param args
  4. * 分析运行结果,说明原理。
  5. */
  6. class A{
  7. void fun1(){
  8. System.out.println(fun2());
  9. }
  10. int fun2(){
  11. return 123;
  12. }
  13. }
  14. public class Test5 extends A{
  15. int fun2(){
  16. return 456;
  17. }
  18. public static void main(String args[]){
  19. Test5 b = new Test5();
  20. b.fun1();//System.out.println(fun2()
  21. A a = b;
  22. a.fun1();
  23. }
  24. }
  25. /*
  26. * 分析:b.fun1();当子类Test5出现和父类A一模一样的函数时,当子类调用子类函数fun2()会覆盖父类函数fun2()并
  27. * 运行子类函数fun2()的内容,这就是覆盖的特性,所以运行结果是子类的返回值456。
  28. * A a = b;父类的引用指向了自己的子类对象,类型提升,这是多态的体现
  29. * a.fun1();父类的引用也可以接收自己的子类对象,成员函数在多态调用时,编译看左边,运行看右边,运行结
  30. * 果还是子类的方法,所以运行结果是子类的返回值456。
  31. * */
复制代码

1 个回复

倒序浏览
没错啊,都自问自答了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马