首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java super 關鍵字完全指南:訪問父類成員與建構子

     編輯:Java 相關知識

super 是子類訪問父類被隱藏成員(欄位、方法、建構子)的專用引用。掌握它是理解繼承機制、避免命名衝突的關鍵。

核心用法三部曲

  1. super() / super(參數):呼叫父類建構子,**必須在子類建構子首行**,與 this() 二擇一。
  2. super.欄位:訪問父類被子類同名欄位隱藏的欄位。
  3. super.方法():呼叫父類被子類覆寫的方法 (含 @Override 方法)。

完整代碼演示

class Father {
    String v = "Father";
    String x = "Father的x";
    Father() { System.out.println("Father無參建構子"); }
    Father(String v) { this.v = "Father帶參建構子"; }
    void out() { System.out.println("Father.out()"); }
}

class Son extends Father {
    String v = "Son"; // 隱藏父類 v
    Son() { super(); System.out.println("Son無參建構子"); }
    Son(String s) { super(s); System.out.println("Son帶參建構子"); }
    void out() { System.out.println("Son.out()"); } // 覆寫

    void test() {
        String v = "局部v";
        System.out.println(v);        // 局部變數
        System.out.println(this.v);   // 子類欄位 Son
        System.out.println(super.v);  // 父類欄位 Father
        System.out.println(x);        // 繼承父類欄位 Father的x
        System.out.println(super.x);  // 同樣 Father的x
        out();        // 子類 Son.out()
        this.out();   // 子類 Son.out()
        super.out();  // 父類 Father.out()
    }
}

public class SuperDemo {
    public static void main(String[] args) { new Son().test(); }
}

輸出

Father無參建構子
Son無參建構子
局部v
Son
Father
Father的x
Father的x
Son.out()
Son.out()
Father.out()

陷阱提醒

  • super.父類私有欄位 → 編譯錯誤 (私有不可繼承/訪問)。
  • 靜態方法中用 super.靜態方法 → 編譯錯誤 (靜態屬類,用 FatherClass.staticMethod())。
  • 多層繼承:super.super.x 不合法,只能跳一層。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved