this和super關鍵字,其用法非常的相似。super用來代表父類,而this用來代表本類。
this()用於調用本類的構造。
super()用來調用父類的構造,必須出現在構造當中的第一行。
this. 用來調用本類的屬性和方法,可以出現在在非static的部分。super.用來調用父類已經父類繼承而來的的屬性和方法,出現在非static部分。
如果this.出現在構造當中,代表正在構造或者即將構造成功的對象;如果出現在方法當中,代表該方法的調用對象,在不重名的情況下,this可以省略。this()不能用來自己調用自己。
public class Sub extends Super{
public Sub(){ //3
super(3); //4
System.out.println("sub1"); //7
}
public Sub(int a){ //2
this(); //3
System.out.println("sub2"); //8
}
public Sub(int a, String b){ //1
this(a); //2
System.out.println("sub3"); //9
}
public static void main(String[] args){
new Sub(5,"aa"); //1
}
}
public class Super {
private String b;
private int a;
public Super(){
this(10, "superman");
System.out.println("super1");
}
public Super(int a){ //4
this(a,""); //5
System.out.println("super2"); //6
} //6
public Super(int a, String b){ //5
//等同於寫了super();由於其父類已經是object,所以沒有執行什麼動作
System.out.println("super3");//5
this.a = a; //5
this.b = b; //5
}
}