2010-12-21 85 views
2

我有一個抽象的java類,它實現了它的幾個方法,但沒有其他的方法。在它實現的方法中,它使用私有屬性變量。所使用的變量也需要在子類中使用。子類需要訪問抽象超類的私有屬性

在我看來我的選擇是:

  • 聲明私有變量在子類和超類
  • 都推遲目前在抽象類中實現的子類方法的實現

還有其他的選擇嗎?哪些更有意義,爲什麼?

回答

2

問題是你想如何維護自己的狀態:如果它沒有問題,那麼值的存儲位置,你可以添加一個private成員「在另一個的頂部」,並用它來代替超類。如果您希望從您的超類中獲取一些方法以及您的子類中的某些方法以訪問相同的狀態,則需要更改可見性:

您可以聲明變量爲protected,使其在子類中可訪問,或者實現訪問器方法,甚至使其成爲public

+0

這樣做更有意義,因爲我需要維護變量的狀態。謝謝 – 2010-12-21 17:20:08

1

希望抽象類的設計使你不需要訪問私有字段。至於你使用哪兩種方法,完全取決於抽象類和你的子類是什麼以及它們應該做什麼。

如果您只需要讀取此變量的訪問權限而超類方法不修改它,您可以爲您的子類添加另一個(完全獨立的)相同名稱/類型的專用字段。如果您試圖通過更改字段來修改超類方法的行爲,您將不得不重寫方法。