為什麼我們不能在 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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP