应用于 Java 静态方法的限制


如果将 static 关键字应用于任何方法,则它将成为一个静态方法。

如果一个方法被声明为静态的,则它是一个类的成员,而不是属于该类的对象。可以调用它而不创建该类的对象。静态方法还具有访问该类中静态数据成员的能力。

对静态方法施加了一些限制

  • 静态方法不能直接使用非静态数据成员或调用非静态方法。

  • this 和 super 不能在静态上下文中使用。

  • 静态方法只能访问静态类型数据(静态类型实例变量)。

  • 无需创建该类的对象即可调用静态方法。

  • 静态方法不能在子类中被覆盖

让我们看看在子类中尝试覆盖静态方法时会发生什么

示例

 实例演示

class Parent {
   static void display() {
      System.out.println("Super class");    
   }
}
public class Example extends Parent {
   void display()  // trying to override display() {
      System.out.println("Sub class");  
   }
   public static void main(String[] args) {
      Parent obj = new Example();
      obj.display();
   }
}

这会产生一个编译时错误。输出如下所示 −

Example.java:10: error: display() in Example cannot override display() in Parent
void display()  // trying to override display()
     ^
overridden method is static
1 error

更新于:26 -6 月 - 2020

3K+ 浏览

开启您的职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.