Java基礎-super關鍵字與this關鍵字
阿新 • • 發佈:2019-01-09
1 class Human3 { 2 3 private String name; 4 private int age; 5 6 public Human3(String name) { 7 super(); 8 this.name = name; 9 System.out.println("構造一個人"); 10 } 11 12 } 13 14 class Pupil3 extends Human3 { 15 private String ID; 16 private String name; 17private int age; 18 19 public Pupil3(String name, String iD, int age) { 20 super(name); 21 ID = iD; 22 this.age = age; 23 System.out.println("構造一個小學生"); 24 } 25 26 } 27 28 public class Example3 { 29 30 public static void main(String[] args) { 31 //TODO Auto-generated method stub 32 Pupil3 pupil3 = new Pupil3("張三", "p123", 10); 33 } 34 }
執行結果
3.此時如果註釋掉super方法就會報錯。
報錯原因:子類必須繼承父類的構造方法,如果父類構造方法中沒有引數傳遞,那麼預設是不寫super()繼承父類的構造方法的。
Human3類的構造方法沒有無引數的構造方法,所以,必須繼承父類有引數的構造方法,所以,必須寫super關鍵字來繼承父類的有引數的構造方法。
除了呼叫父類構造方法外,super還可在子類中指代父類物件,用於: 訪問被子類隱藏的父類欄位, 呼叫被子類覆蓋的父類方法。 使用形式:super.父類欄位名
super.父類方法名(可選實參表)
4.例項成員(例項欄位、例項方法):沒有static修飾的成員。 例項成員就是非靜態成員,例項成員為類物件所獨佔。 使用物件(例項)作字首引用例項成員,語法形式:物件名.方法名(實參表)
物件名.欄位名
關鍵字this用於指代當前的物件。因此,類內部可以使用this作字首引用例項成員。 例如,Pupil3類中可用this.age引用例項欄位age。