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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. ------<a  target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
复制代码
这是我对运行结果的一些简单理解,望大家能给出更详细的解答。
  1. package com.itheima;


  2. /**7、 分析运行结果,说明原理。
  3. *         答:主函数中,b.fun1()运行结果是456,因为是B类引用建立了B类的对象,B类继承了A类的fun1()方法,并覆写了父类的fun2()方法,
  4. *                  所以b.fun1()调用的是子类的fun2()方法。运行结果是456。
  5. *            a.fun1()运行结果是456,因为B b = new B(),将b赋值给A a时,即相当于A a = new B()。这是一个多态,父类引用指向子类对象。
  6. *     在多态中的规律是,运行的方法都是运行子类的方法。
  7. *     所以a.fun1()调用的是子类的fun2()方法,运行结果是456
  8. *  @author liwensi
  9. * */
  10. public class Test7 {
  11.         public static void main(String[] args) {
  12.                 B.main(null);
  13.         }
  14. }

  15. class A {
  16.     void fun1() {
  17.               System.out.println(fun2());
  18.         }
  19.         int fun2() {
  20.                 return 123;
  21.         }
  22. }
  23. class B extends A {
  24.         int fun2() {
  25.                  return 456;
  26.          }
  27.       public static void main(String args[]) {
  28.                 B b = new B();
  29.                 b.fun1();
  30.                 A a = b;
  31.                 a.fun1();
  32.         }
  33. }
复制代码


4 个回复

倒序浏览
学习了,我也有这道题
回复 使用道具 举报
学习到了!分析的很到位!
回复 使用道具 举报
基础测试题是允许讨论的吗?
回复 使用道具 举报
学习了,分析的挺透彻
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马