應用於 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.