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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张金   /  2012-10-5 21:03  /  4965 人查看  /  21 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

李志群 发表于 2012-10-7 23:15
随便您 呵呵 你看好我发的视频 和例子 在说 你看看我发那视频讲的是什么  。。你和我讲的是一个吗 你就说 ...

好啊,我看你能撑多久.
你自己听听你发的那视频,从6分20秒时开始听,看看老毕说的是什么.怎么,你以为我没有听过吗,老毕7个G多的完整的视频我都早下载过了.
现在又看看你发的例子:
  1. class fu {

  2.         fu() {
  3.                 show();
  4.         }

  5.         void show() {
  6.                 System.out.println("fu show run");
  7.         }

  8. }

  9. class zi extends fu {

  10.         int num = 8;
  11.         {
  12.                 // 构造代码块
  13.                 System.out.println("cons code num= " + num);
  14.         }

  15.         zi() {
  16.                 // super();隐式的
  17.                 // 显示初始化隐式的
  18.                 // 构造代码块 隐式的
  19.                 System.out.println("cons function num = " + num);
  20.         }

  21.         void show() {
  22.                 System.out.println("zi show num= " + num);
  23.         }

  24. }

  25. public class InitTest {

  26.         public static void main(String[] args) {
  27.                 new zi();
  28.                 /*
  29.                  * 打印结果。 zi show num= 0 cons code num= 8 cons function num = 8
  30.                  */
  31.         }

  32. }
复制代码
这是你自己写的代码吧,你自己不写好注释了,程序运行结果为:
zi show num= 0// 结果1
cons code num= 8// 结果2
cons function num = 8// 结果3

结果1: 父类的构造方法先调用到(因为父类没有成员属性,也没有构造代码块,所以父类就执行构造方法.),构造方法中调用到show()方法,由于多态,所以其实是调用到的子类的show()方法,从而出现结果1.
结果2: 父类的构造方法执行完后,就轮到子类了.首先是将子类的成员变量进行显式初始化(子类成员与父类成员的默认初始化,在子类的构造方法里调用到super()语句时,就开始执行了.所以结果1中,num的值为0就是因为在父类的构造方法还没有执行完毕时,子类的成员变量只有默认初始化时的值,子类的成员还没有进行显式初始化,所以num的值为0.),子类成员显式初始化后,num的值就为8.然后就执行子类的构造代码块,所以输出结果2.
结果3: 子类在成员的显示初始化与构造代码块分别执行完后,才轮到子类的构造方法开始执行,于是才有结果3.

我看你现在还能说什么,你继续争下去啊,我很期待.
回复 使用道具 举报
李志群 发表于 2012-10-7 23:15
随便您 呵呵 你看好我发的视频 和例子 在说 你看看我发那视频讲的是什么  。。你和我讲的是一个吗 你就说 ...

另外,我已经在18楼把毕老师在视频中的总结截图给你看了,你居然还要挣扎,有意义吗?

看到没有,第6和第7的顺序,你现在还一如既往地认为是老毕说构造代码块的执行顺序比构造方法的执行顺序要晚吗?
要不要我们另外开贴,让大家都进来参观一下?需要吗?
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马