黑马程序员技术交流社区

标题: 分析运行结果,说明原理。 [打印本页]

作者: 洋葱头头    时间: 2015-9-4 08:01
标题: 分析运行结果,说明原理。
  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.         }
复制代码

作者: Sabrina_9000    时间: 2015-9-4 08:13
继承抽象函数的话 不需要重定义fun1吗?
作者: doterlm    时间: 2015-9-8 14:43
A a=b只是产生了一个指向B b 的指针   输出应该是456 456
作者: Q的感动    时间: 2016-3-12 16:04
B b = new B()  b.fun1() 会打印之类自己的方法  所以是456

A a = new B()   a.fun1() 属于父类引用指向之类对象,会打印父类的方法   所以是123
作者: woshihuoye    时间: 2016-3-12 23:39
同意楼上
作者: lijiy09    时间: 2016-3-12 23:52
B b = new B( );
b.fun1( );
B继承A方法fun1( ), 输出B的fun2( ),结果456;

A a = b;
a.fun1( );
是多态,B重写A方法fun2( ),结果456,

作者: xgm    时间: 2016-3-13 00:11
  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.                 /**
  16.                  * B继承了A,B也就继承了A中所有的方法
  17.                  * B调用方法时,会先找B中是否有这个方法,然后再去A中找
  18.                  * 因此此时b.fun1();调用的是B对象中的方法,结果456
  19.                  */
  20.                 b.fun1();
  21.                 /**
  22.                  * 父类A引用指向子类对象B
  23.                  * 子类B重写了A中的fun1(),
  24.                  * 典型的多态,所以结果依然是456
  25.                  */
  26.                 A a = b;
  27.                 a.fun1();
  28.         }
  29. }
复制代码

作者: 小海龙    时间: 2016-4-15 21:42
学习了。我真么搞这么清楚
作者: Q灬先生    时间: 2016-4-15 23:05
提前看看,涨涨知识
作者: xiaoxiqq    时间: 2016-4-16 00:13
本帖最后由 xiaoxiqq 于 2016-4-16 00:43 编辑

前来学习。




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