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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© syz1993 中级黑马   /  2014-12-30 12:27  /  1396 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 syz1993 于 2015-1-1 22:32 编辑
  1. class A {

  2.     void fun1() {

  3.               System.out.println(fun2());

  4.         }

  5.         int fun2() {

  6.                 return 123;

  7.         }

  8. }

  9. public class B extends A {

  10.         int fun2() {

  11.                  return 456;

  12.          }

  13.       public static void main(String args[]) {

  14.                 B b = new B();

  15.                 b.fun1();

  16.                 A a = b;     //是多态吧

  17.                 a.fun1();

  18.         }

  19. }
复制代码
(运行结果都是456,为什么多态时,调用方法调用子类的,而不调用父类的)
这个问题我解决了,因为子类已经覆写了父类的方法,所以在调用方法时,一定调用的是子类覆写了的方法
怎么很多人都评论这里没多态啊。
这是一个基础测试题,分析结果,说出运用的原理。

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

12 个回复

倒序浏览
....................................

点评

你这个太水了  发表于 2015-1-2 02:58
回复 使用道具 举报
这里没有涉及到多态呀,A类中有两个方法,B类继承了A类,B类就有了A类的这两个方法,但是B类重写了fun2()方法,这个时候B类仍然有一个fun1()方法,和A类的一样,因为是继承过来的。主函数当中的b.fun1();b对象调用的是子类的方法,不是父类的,代码中的第31行,是把b的引用给了一个A类类型的变量a,a和b的在栈内存中的物理地址不同,但是引用是相同的,就是指向的对象是相同的,都是指向27行new的那个new B();所以33行的a.fun1()其实和29行的b.fun1()输出的结果一样,都是456
回复 使用道具 举报
学了后面忘了前面
回复 使用道具 举报
哥们,你都没覆写父类的方法,只是继承了父类!不算多态!
回复 使用道具 举报
寻觅 发表于 2014-12-31 09:49
这里没有涉及到多态呀,A类中有两个方法,B类继承了A类,B类就有了A类的这两个方法,但是B类重写了fun2()方 ...

A a=b;不是多态?
回复 使用道具 举报
你这代码写的   我是真心看的艰难   学习下吧   我还是什么都不懂的
回复 使用道具 举报
446111220 发表于 2015-1-1 21:29
你这代码写的   我是真心看的艰难   学习下吧   我还是什么都不懂的

这是一道基础测试题,分析结果,写出原理
回复 使用道具 举报
syz1993 发表于 2015-1-1 21:04
A a=b;不是多态?

不好意思,我有点看走眼了!你这个是多态,你过我给你的回复其他的写的都是对的!不好意思!
回复 使用道具 举报

      B b = new B();

         b.fun1();//子类继承父类的fun1()并且覆盖了父类的fun2(),fun1()调用fun2()时是调用自己的方法

                A a = b;//父类引用指向子类对象时,父类访问自己的方法fun1(),fun1()调用fun2()时可以调用子类的方法

                a.fun1();
回复 使用道具 举报
你的这个代码并没有涉及到多态的应用,多态的格式是父父 new子,你这只是建立了子类的对象,并不是多态
回复 使用道具 举报
18334705181 发表于 2015-1-1 22:08
你的这个代码并没有涉及到多态的应用,多态的格式是父父 new子,你这只是建立了子类的对象,并不是多态 ...

再往下看,A a=b;是多态把,父类引用 指向了子类的对象
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马