Effective Java之使类和成员的可访问性最小化(十三)
對于類
對于類,只有public和package-private兩種訪問級別。
1.對于頂層的類來說,只有包級私有和公有兩種可能,區別是包級私有意味著只能在當前包中使用,不會成為導出api的一部分,而公有意味著導出api,你有責任去永遠支持它。所以,為了使訪問最小化,能包級私有就應該聲明為包級私有。
2.對于包級私有類來說,如果只在某一個類中被使用,那么就直接讓這個包級私有類成為這個類的嵌套類,這樣就能讓訪問級別再次縮小。
對于成員
成員包括域,方法,嵌套類和嵌套接口
訪問級別有私有的,包級私有的,受保護的和公有的四種。
1.實例域絕對不能是公有的,聲明實例域是公有的,相當于限制了對儲存在這個域中的值進行限制的能力,破壞了封裝性。
而靜態域 也只有在提供常量的抽象類中,通過公有的靜態final域來暴露。
?
2. 設計類時,應當把所有的其他成員都變成私有的。
只有當同一個包中另一個類真正需要訪問一個成員的時候,才應該刪除private修飾符,把該成員變成包級私有的。
其實這兩者都是類的實現的一部分,不會影響到他的api。
3.如果對于公有類的成員,訪問級別從包級私有變成保護級別時,要額外小心,因為保護的成員是導出api的一部分,必須得到永久支持。
4.方法覆蓋了超類中的一個方法,子類中的訪問級別就不允許低于父類的訪問級別。這個規則限制了方法的可訪問性的能力,保證可以使用超類的地方都可以使用到子類。
這就是為什么實現接口的方法都是public的原因,因為接口的方法默認是public abstact的。
總結
以上是生活随笔為你收集整理的Effective Java之使类和成员的可访问性最小化(十三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Effective Java之谨慎地覆盖
- 下一篇: Effective Java之在公有类中