2016-10-15 102 views
0

我有一個抽象類User和accessFlag靜態整數,然後我有多個繼承這個不同accessFlag的類,學生,管理員,老師。所有這些類都必須包含accessFlag,但我希望將其設置爲像管理員靜態accessFlag = 2;覆蓋靜態繼承的靜態變量

下面的代碼現在當我創建管理員和顯示accessFlag它顯示0而不是2.我假設我可以在管理員中創建getter和setter,然後我會得到適當的值,但我不想有如此多重複的代碼從繼承自用戶getter和setter的accessFlag的每個類中。

abstract public class User 
    { 
     static int accessFlag; 

     public int AccessFlag 
     { 
      get 
      { 
       return accessFlag; 
      } 

      set 
      { 
       accessFlag = value; 
      } 
     } 
    } 
    public class Administrator: User 
     { 
      static int accessFlag = 2; 
     } 
+2

靜態成員不會被繼承。所以你也不能重寫它們。 – poke

+0

我很確定你不想在這裏靜態。你有沒有考慮一個接口? – Eris

+0

@poke如果它是非靜態字段呢?我還是會寫覆蓋getter和setter在每一個繼承的用戶類 厄里斯良好的接口,只允許方法,所以我不知道類如果多數民衆贊成最好的主意 – Higeath

回答

0

沒有語言支持如何做到這一點。最好的方法是重寫屬性的getter和setter。順便說一下,我不認爲制定者在這裏有任何意義。

唯一的選擇是如何實現它沒有這個反映。在吸氣劑中,您可以在對象上調用GetType(),並請求該類的成員accessFlag。但它會很慢很醜。