為什麼我們不能在 Java 的靜態方法中使用“super”關鍵字?


靜態方法或塊屬於類,這些方法或塊將隨類一起載入到記憶體中。你可以呼叫靜態方法,而無需建立物件。(使用類名作為引用)。

其中,Java 中的“super”關鍵字用作對超類物件的引用。這意味著要使用“super”,方法應該由一個物件呼叫,而靜態方法不是物件。

因此,你無法在靜態方法中使用“super”關鍵字。

示例

在下面的 Java 程式中,類“SubClass”包含一個私有變數name,以及一個 setter 和 getter 方法,還有一個例項方法display()。我們在主方法(這是一個靜態方法)中,試圖使用 this 關鍵字呼叫 display() 方法。

class SuperClass{
   protected String name;
}
public class SubClass extends SuperClass {
   private String name;
   public static void setName(String name) {
      super.name = name;
   }
   public void display() {
      System.out.println("name: "+super.name);
   }
   public static void main(String args[]) {
      new SubClass().display();
   }
}

編譯錯誤

SubClass.java:7: error: non-static variable super cannot be referenced from a static context
   super.name = name;
^
1 error

更新於: 2021 年 7 月 28 日

4K+ 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.