为什么不能在 Java 的静态方法中使用"super"关键字?

java 8object oriented programmingprogramming更新于 2025/9/7 18:20:17

静态方法或静态块属于类,它们会随类一起加载到内存中。无需创建对象即可调用静态方法(使用类名作为引用)。

Java 中的"super"关键字用作对超类对象的引用。这意味着要使用"super",该方法必须由对象调用,而静态方法则不需要。

因此,不能在静态方法中使用"super"关键字。

示例

在下面的 Java 程序中,类"SubClass"包含一个私有变量 name,该变量包含 setter 和 getter 方法以及一个实例方法 display()。从主方法(静态的)中,我们尝试使用这个关键字调用 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();
   }
}

Compile-time error

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

相关文章