首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android/Java 中 super 與 super() 關鍵字解析:父類引用與建構子鏈

     編輯:程式設計綜合問答

提問釐清

問題提到 super 和 supply。Java/Android 中沒有 supply 關鍵字,推測為輸入法誤觸或聽錯。本文針對 super 詳細說明。

super 兩大用法

1. 存取父類成員 (變數/方法)

class Parent {
    String name = "Parent";
    void show() { System.out.println("Parent show"); }
}

class Child extends Parent {
    String name = "Child";
    
    void print() {
        System.out.println(name);        // Child
        System.out.println(super.name);  // Parent ← 存取父類被遮蔽的變數
    }
    
    @Override
    void show() {
        super.show(); // 呼叫父類實作
        System.out.println("Child show");
    }
}

2. 呼叫父類建構子 (必須在建構子第一行)

class Parent {
    Parent(String msg) { System.out.println(msg); }
}

class Child extends Parent {
    Child() {
        super("Hello from Child"); // 顯式呼叫父類帶參建構子
        // 若無 super(...),編譯器隱含插入 super() (呼叫無參建構子)
    }
}

super vs this 對照

關鍵字指向主要用途
this當前類實例區分同名成員、建構子鏈、傳遞自身引用
super父類實例 (同一物件的父類部分)存取被覆寫/遮蔽的父類成員、呼叫父類建構子

常見錯誤

  • 在靜態方法中使用 super / this → 編譯錯誤。
  • 建構子中同時呼叫 this(...) 和 super(...) → 編譯錯誤,二擇一且必須首行。
  • 以為 super 能存取父類 private 成員 → 不能,需父類提供 protected/public 存取器。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved