super用於調用父類構造函數的部分,其必須出現在構造函數的第一行。super在調用時第一件事就是去執行父類構造函數的部分,所執行的父類構造函數與super()括號中的參數相對應。
this用於在一個構造函數中調用同一個類另一個構造函數,其也必須是第一行語句。
super和this不能同時出現在一個構造函數中,其兩個在使用時必須出現在構造函數的第一行語句,其區別為super調用父類構造函數,this調用自身類的構造函數。
為便於理解,可以將this理解為自己,也就是這個類本身,因此調用this是調用自己類的構造函數。
public abstract class Animal { private String name; public String getName() { return name; } public Animal() { } public Animal(String theName) { name=theName; } public Animal(String x,String getname) { } }
public class Hippo extends Animal{ String name; public Hippo() { //編寫此構造函數父類需也有無參構造函數 String test; } public Hippo(String name) { super(name); //使用super方法將name傳給父類Animal System.out.println("big"); } public Hippo(String x,String name) { this(name); //this為調用只有一個string參數的構造函數,即調用上面的構造函數輸出big //super(name); //super和this只能調用一個 System.out.println(x); } }
輸出結果為
big
Buffy
