黑马程序员技术交流社区

标题: 子父类继承中要注意的一个问题,,一不小心,你就会犯 [打印本页]

作者: 0618张军    时间: 2015-7-9 22:30
标题: 子父类继承中要注意的一个问题,,一不小心,你就会犯
  1. class Fu {
  2.         Fu() {
  3.                 super();
  4.                 [color=Red]show();[/color]
  5.                 return;
  6.         }

  7.         void show() {
  8.                 System.out.println("父类show");
  9.         }
  10. }

  11. class Zi extends Fu {
  12.         int num = 8;

  13.         Zi() {
  14.                 super();
  15.                 return;
  16.         }

  17.         void show() {
  18.                 System.out.println("子类show:" + num);
  19.         }
  20. }

  21. public class ExtendDemo {
  22.         public static void main(String[] args) {
  23.                 Zi z = new Zi();
  24.                 z.show();
  25.         }
  26. }
复制代码
关于继承中子父类的方法调用问题应当注意的一个小地方。(我一开始怎么都想不明白),后来终于想通了,特发给大家。
可能有些人对这些代码一看就懂,,但我还是想从最基本的开始说起
1,调用主函数,创建子对象后,调用show()方法,但这时不是调用show()方法,,
2,而是先执行子的构造方法,--super()---进入父类中执行父类的构造方法.
3,于是进入父类中的super()方法,,而父类的super是Object类,,当然什么也没有
4,下一步执行父类中的show()方法,这时父类中本身有show()方法,(我当时想的
应该直接调用父类中的show()方法,,这是错误的.)
5,在执行父类中的show()方法时,因子父类中是继承关系,在继承关系中调用方法都会从最下层开始执行
这个代码中就是先在子类中查找,正好有这个方法,于是就执行子类show()方法.
6,代码执行结果,,子类show:0
              子类show:8
作者: very爱    时间: 2015-7-9 23:21
构造函数中可以出现return吗?




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