java中的显示初始化和特定初始化

public class Test{
   public static void main(String[] args){
       Child child = new Child();
   }
}

class Parent{
    public Parent(){
	   super();
	   show();//this.show(); 因为是Child类对象调用了super()来构造其父类的部分;所以父类中的this(随着其构造方法入栈的)是指向Child类对象的!所以调用的就是Child类对象的show方法!
	   return ;
	}
	
	public void show(){
	    System.out.println("parent run!");
	}
}

class  Child extends Parent{
   int num = 8;//显示初始化
   public Child(){
       super();
	   //--> 这一块是分水岭,咋回事呢? super();执行完毕也就是父类初始化完毕,才会对子类进行显示初始化
	   // 也就是 num=8这句显示初始化加载了构造函数紧挨着super();语句之后; 然后是子类中的数据的特定初始化!
	   System.out.println("num = " + num);
	   num = 10;//特定初始化
	   System.out.println("num = " + num);
   }
   
   public void show(){
      System.out.println("child run && num = " + num);
   }
}

  

posted @ 2014-07-28 10:41  hjzqyx  阅读(1586)  评论(0编辑  收藏  举报