1. 程式人生 > >Java基礎-super關鍵字與this關鍵字

Java基礎-super關鍵字與this關鍵字

複製程式碼
 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;
17
private 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。