簡體   English   中英

在Java中,如何從父方法訪問子實例的私有靜態屬性?

[英]In Java, how access a private static attribute of a child instance from parent method?

這是一個例子:

class Parent {
    protected int A;

    public void displayA() {
        System.out.println(A);
    }
}

class Child extends Parent {
    protected static int A=2;
}

Child intance = new Child();
intance.displayA();

=> return null !!!

從父方法檢索子屬性的方法是什么?

謝謝 :)

您可以在Child的構造函數中設置A變量:

class Child extends Parent {
   // protected static int A=2; // this redeclares the variable -- it's a different variable

   public Child() {
      A = 2;
   }
}

但是我認為您最好給父母的變量一個getter和setter,然后根據需要從孩子或父母那里設置或獲取它。 在我看來,這比直接操作字段更好,因為您可以隨后監視字段的更改並在更改的數據不合適時采取措施。

其他建議:學習並遵循Java命名規則。 另外,您發布的代碼中有很多粗心大意的錯誤,包括錯別字。 如果您要其他人盡力免費幫助您,則並不是要您做同樣的事,而是要用真實的代碼提出一個體面的問題,以免產生幫助。您比需要的還要困難。

在您的實例中,如果您使用Child類構造函數設置A的值,而不是重新聲明變量,則父類應該能夠獲取該值。

上面的實例的問題在於,您要在子類中重新聲明變量,而不僅僅是更改超類中變量的值。

是否有必要將子變量聲明為靜態? 如果只需要該類變量的值,則可以直接引用它。 但是,有一種更巧妙的方法可以讓多個子類設置變量值,並由超類使用該方法:讓子類設置所需的值,然后讓超類引用該變量(可能使用吸氣劑)該子類已設置其值。

暫無
暫無

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

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