簡體   English   中英

Java中的靜態成員行為

[英]static members behavior in java

我對Java中的以下行為感到困惑,我知道Java無法實現靜態繼承,那么我如何能夠調用A的B類靜態成員?

public  class A {
  static int staticVariable = 5;
  public static void staticMethod(){
  System.out.println("A");
 }
}
public class B extends A{}
public class C {
    public static void main(String[] args) {
      A.staticMethod();
      B.staticMethod();
      System.out.printf("A's int value %d and B's int value is %d",A.staticVariable,B.staticVariable);
    }
}

輸出:

A
A
A's int value 5 and B's int value is 5

無論做什么,您在這里所做的都不是“靜態繼承”,而是簡單的舊名稱解析(在編譯時)。 這樣可以使您可以在放置A的所有位置使名稱限定為B,但B本身定義的名稱除外。

繼承static成員可能的,因為你的例子顯示。 多態static函數是不可能的,因此B不可能覆蓋AstaticMethod()

對於類方法,運行時系統將調用在調用該方法的引用的編譯時類型中定義的方法。 對於實例方法,運行時系統將調用在調用該方法的引用的運行時類型中定義的方法。

閱讀本文以了解更多詳細信息: http : //krsethur.wordpress.com/2005/12/15/static-method-inheritance/

我認為靜態方法/變量就像OP語言中的函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM