本帖最后由 赵小豪 于 2014-4-10 19:19 编辑
1.你new了一个子类对象,先走到public Child(){,注意它并没有走下去,而且走到了父类public Base() {};
2.当走到父类public Base() {};则执行了空构造方法中的this.dispaly();;
3.此时的this,代表着引用对象Child,所以运行子类中的 public void dispaly() ;
4.只要创建子类对象,当子类方法跟父类一样时则进行覆盖;
5.所以运行 System.out.println("Child"); System.out.println(i);输 出Child和0
6.为什么会是0,因为你创建子类对象时没有进行初始化;
7.public int i = 22;这句话并没有被执行到,所以i默认值为0.
8.这也是为什么有时我们需要创建带参的构造函数,目的就是为了初始化数据。
9.需要注意的是运行子类是先走父类再走子类,子类会覆盖父类中的同名一样的方法。
|