为什么我们不能在 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
广告