黑马程序员技术交流社区

标题: 黑马程序员-基础测试题第7题 [打印本页]

作者: 李文思    时间: 2015-7-11 15:28
标题: 黑马程序员-基础测试题第7题
  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. }
复制代码



作者: guoningyan    时间: 2015-7-12 14:00
学习了,我也有这道题
作者: 825176857    时间: 2015-7-12 14:41
学习到了!分析的很到位!
作者: Claw    时间: 2015-7-12 14:50
基础测试题是允许讨论的吗?
作者: 易阳    时间: 2015-7-12 14:56
学习了,分析的挺透彻





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2