黑马程序员技术交流社区

标题: 子类继承父类的过程 [打印本页]

作者: 张森    时间: 2013-1-3 10:43
标题: 子类继承父类的过程
有谁能具体的讲解下下面的运行流程,谢谢。
class X {
        Y b = new Y();
        X() {
                        System.out.print("X");
        }
}
class Y {
        Y() {
                        System.out.print("Y");
        }
}
public class Z extends X {
        Y y = new Y();
        Z() {
                        System.out.print("Z");
        }
        public static void main(String[] args) {
                        new Z();
        }
}


作者: 刘文超    时间: 2013-1-3 10:50
本帖最后由 刘文超 于 2013-1-3 11:15 编辑

lz你好,我先给你写一下执行过程,并在代码中标注了1、2、3、4一共四行代码,过会要提到:
首先代码执行main函数new Z(),准备执行Z的构造方法;
在执行之前必须先执行父类X的构造方法才行,也就X();
但是,在执行构造方法X()的方法体之前要先对默认的属性Y b进行初始化,执行语句1;打印:Y
之后执行X()的方法体:语句2;打印X
---父类构造方法执行完毕,要回到本类中去,即Z的构造中;
同理,在执行Z()方法体之前要先对Z的属性Y y初始化,执行语句3;打印Y
最后执行Z()的方法体,执行4;打印Z
  1. class X {
  2.         Y b = new Y();  //1

  3.         X() {
  4.                 System.out.print("X");  //2
  5.         }
  6. }

  7. class Y {
  8.         Y() {
  9.                 System.out.print("Y");
  10.         }
  11. }

  12. public class Z extends X {
  13.         Y y = new Y();           //3

  14.         Z() {
  15.                 System.out.print("Z");      //4
  16.         }

  17.         public static void main(String[] args) {
  18.                 new Z();
  19.         }
  20. }
复制代码

作者: hanyahui    时间: 2013-1-3 10:57
子类先调用父类的构造方法,在调用自己的
作者: 张森    时间: 2013-1-3 22:23
刘文超 发表于 2013-1-3 10:50
lz你好,我先给你写一下执行过程,并在代码中标注了1、2、3、4一共四行代码,过会要提到:
首先代码执行mai ...

thks  一目了然
作者: 刘文超    时间: 2013-1-3 22:29
张森 发表于 2013-1-3 22:23
thks  一目了然

恩 我等着版主给技术分呢、这两天回复的比较多、得分不多、
可能他们也比较忙吧、放假了、、、
作者: ♂老男孩♀    时间: 2014-7-13 14:08
每个类都有一个构造方法吗?隐式或者显式的构造{:3_62:}




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