2011-03-19 27 views
7

可能重複的使用領域:
Java protected fields vs public getters好的設計:如何超

如果我有一個B類擴展A和一個我有一些領域,我也使用B中,最好是讓這些字段受到保護,並從B類中調用它們或爲這些字段寫入getter方法,然後使用B類中的這個方法? (此字段在A的constuctor設置好的)

+1

可能重複:http://stackoverflow.com/questions/2279662/java-protected-fields-vs-public-getters – smas 2011-03-19 12:49:40

回答

2

如果你喜歡干將公衆成員的數據顯示在您的界面(你應該),然後使用受保護的getter出於同樣的原因。像公共客戶一樣,子類是不受控制的類,不需要對內部進行無限制的訪問。

1

在我看來,我知道很多人會不同意,如果這些類全部由您實現,最好使用protected對象/變量,因爲它可以讓您更好地控制擴展超類的類的內部。我不會太擔心封裝問題,因爲你控制了整個源代碼。

如果類需要由別人誰不會有類的源進行擴展,我會建議使用干將,如果有必要,並儘可能甚至避免這種情況。

1

我認爲使用getter和setter方法始終是更好的選擇,即使是在同一個班!原因很簡單。想要以您訪問該領域的方式更改任何內容的圖像。

例如你訪問保存了值的int。現在由於某些原因,您希望在訪問它們之前將此值始終乘以2。如果您使用的存取方法,你簡單的改變你的方法:

private int test = 5; 

public int getValue() { 
    return test; 
} 

public int getValue() { 
    return test * 2; 
} 

如果你想在同一時您可以直接訪問現場測試,你有大的問題,當你想改變這樣的的東西。