A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马王晓明 中级黑马   /  2013-7-26 23:56  /  1382 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马王晓明 于 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

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

2 个回复

倒序浏览
倒着看程序,即从主函数开始看:
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为父类引用








回复 使用道具 举报
好吧 之前我不理解是因为我忘了子类方法里边的连续调用以后下边还有输出语句没有执行呢  现在已经知道了 谢谢你的详细解释
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马