黑马程序员技术交流社区

标题: 子类 父类中构造方法的特点 [打印本页]

作者: 黑马王晓明    时间: 2013-7-26 23:56
标题: 子类 父类中构造方法的特点
本帖最后由 黑马王晓明 于 2013-7-27 00:22 编辑
  1. <package test;


  2. class Fu
  3. {
  4.         
  5.         Fu(int x){
  6.           super();
  7.           System.out.println("fu...run");
  8.         }
  9. }
  10. class Zi extends Fu
  11. {
  12.         Zi(){
  13.         this(4);
  14.             System.out.println("zi...run");
  15.         }
  16.         Zi(int y){
  17.                 this(3,4);
  18.                 System.out.println("zi...run.......y");
  19.         }
  20.         Zi(int z,int a){
  21.            super(1111);
  22.            System.out.println("zi...run.......z");
  23.         }
  24. }
  25. class ExtendsDemo
  26. {
  27.         public static void main(String[] args)
  28.         {
  29.                 new Zi();
  30.         }
  31. }
  32. >
复制代码
代码如上,程序运行结果如下:
fu...run
zi...run.......z
zi...run.......y
zi...run

它们运行的结果是怎么样的,之中用到了哪些具体的知识点 越详细越好 求帮助 求理解啊 谢谢了

作者: xwf4348    时间: 2013-7-27 00:15
倒着看程序,即从主函数开始看:
1.new Zi()--------创建一个无参子类对象,调用Zi 类无参构造函数Zi(){}
2.在Zi 类中找到无参构造函数Zi(){        this(4); System.out.println("zi...run");}发现有this(4),this是本类引用,所以先调用对应的构造函数Zi(int X){}
3.找到对应的构造函数Zi(int X) Zi(int y){this(3,4);  System.out.println("zi...run.......y");},发现有this(3,4)继续调用本类对应的构造函数Zi(int z,int a){}
4.找到对应构造函数 Zi(int z,int a){super(1111);System.out.println("zi...run.......z");},有super(1111),super为父类引用,即调用父类对应的构造函数Fu(int x){}
5.找到父类中对应的构造函数  Fu(int x){ super();System.out.println("fu...run");},虽然父类构造函数还有super(),但是其实这里引用的是Object(){},引用到这里就结束了,然后开始打印语句:刚刚倒着上来,现在顺着打印下去:fu...run     zi...run.......z     zi...run.......y      zi...run
主要知识点就是构造函数中的this引用和super引用;
this为本类引用,super为父类引用









作者: 黑马王晓明    时间: 2013-7-27 00:21
好吧 之前我不理解是因为我忘了子类方法里边的连续调用以后下边还有输出语句没有执行呢  现在已经知道了 谢谢你的详细解释




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