2012-09-21 52 views

回答

4

這裏有幾條細線,我可以用幾種不同的方式回答這個問題。

考慮開發人員將所有內容都標記爲私有的情況。如果只是我可以擴展它並覆蓋doSomething()方法,它可能是一個非常好的類,可以重用。但是,由於該方法被標記爲私人,我的手被捆綁。這將導致許多開發者複製&粘貼整個課程,改變一個必要的部分。 (不酷。)因此可以看到,將所有標記爲私有可防止重用。

但是,另一方面,請考慮開發人員將所有內容標記爲公開的情況。開發人員或其他開發人員開始編寫擴展類,或者調用所有可能應該標記爲protected/private的各種方法/訪問屬性。發現了一個設計錯誤或類似問題,這需要修改類。但是,由於它被寫成「開放」,所以可能是一個簡單的修復,現在要複雜得多,因爲必須找到並考慮所有附加參考。

我認爲最好的選擇是妥協。將客戶代碼使用的設計標記爲「公開」。將沒有業務的事物標記爲「私人」。如果有什麼東西可以證明對將來有用的人有用,請將其標記爲「受保護」。並且總是添加Javadocs以進一步表明您的意圖。

+0

Thnx爲答案。但是我想要了解這些訪問修飾符如何幫助代碼重用。 – Okky

1

要重用的代碼需要可以理解且可靠。

可以理解的:通過使某些方法是私有的,類的作者指定這些方法是內部實現的deatils,重用戶只需要考慮公共方法。

可靠:通過將字段設置爲私有,我們可以防止重新用戶意外地破壞重用代碼的內部狀態。

0

假設你很清楚這些訪問說明如

私募類只

默認包只

保護類和派生類的範圍

public-全部

現在想象一下,你有一個包含方法

public int calculate(int x,int y,int z){ 
z=x+y; 
x=z+x; 
z=x+y; 
return z; 
} 

這是一個公共方法,並可以從任何地方accesed類,任何包裝,無論是衍生或沒有任何類。 現在你想在一個新的類中使用這個函數,你可以簡單地導入這個類並使用該方法而不必一次又一次地寫入。

這是一個非常簡單的例子,你可以在這裏用你自己的函數替換,比如檢查系列是否是斐波那契數列,計算簡單的興趣/ compund興趣等等,並在需要的地方重複使用。

0

假設我有一個實用助手類,我希望別人能夠重用。我在該類中加載了很多方法和變量,但使用該類的人不需要它們。

  • public標誌着可以很容易地重複使用的方法。它應該始終記錄良好,以便有人知道如何以及何時調用它。

  • private將該成員標記爲內部機制的一部分 - 我的重新用戶不需要擔心。

通過顯式說明允許的訪問模式你把它有關的代碼應該如何訪問更加清晰,從而使其更易於維護,更容易讓別人重新使用。

在一次採訪中(我已經僱傭了很多開發人員),您應該能夠清楚地解釋每個訪問修飾符的用途,並且能夠給出每個用法的示例。