如果我有一個java包,它是package-private(用「class」聲明,而不是「public class」),如果裏面的方法聲明爲public或protected或者package-private,那麼真的沒有區別嗎?那麼我應該使用哪一個,或者什麼時候應該使用哪個?我有點困惑。Java - 包私有類中的方法可訪問性?
10
A
回答
18
如果我有一個Java類是包私有的(以「類」,而不是「大衆級」聲明),確實沒有區別,如果方法內聲明公共或保護或包私有,對?
好吧,也許不會立即。但是,如果您(或將來)宣佈從包私有類繼承的「受保護」或「公共」類,那麼原始類的成員的可見性會做的事。
正如@kmccoy指出的那樣,將該類聲明爲final可以刪除子類的可能性。
但這真的只是裝飾窗戶。如果您決定確實需要創建子類,則只需刪除final
...然後回到訪問修飾符的選擇非常重要的情況。
IMO,底線是你應該選擇最合適的修飾符...即使現在沒有必要。如果沒有別的,你選擇的修飾符應該記錄你的意圖,即抽象邊界在哪裏。
4
包類中的公共方法對同一包中的類是公共的。但是,私有方法不能被同一個包中的類訪問。
相關問題
- 1. 私有方法可訪問
- 2. URLClassLoader和包私有方法的可訪問性
- 3. .java文件中的包私有類 - 爲什麼可以訪問?
- 4. 是否可以從Java中的子類訪問父類的私有方法?
- 5. 訪問私有類中的私有方法
- 6. Java EE 6中的@Remote是否可以訪問私有方法?
- 7. 訪問類中的私有屬性
- 8. Lambda可訪問私有方法
- 9. Java新手問題:包私有訪問
- 10. Groovy如何訪問Java類的私有方法?
- 11. 訪問私有方法
- 12. 訪問JS私有方法
- 13. 如何從java中的不同類中的私有類訪問公共方法?
- 14. 類中的私有變量可以從Java中的main訪問?
- 15. @Transactional方法禁用警告「訪問可以是包私有」
- 16. 包含可訪問方法的iOS類
- 17. 無法使用Reflection API訪問java中的私有方法
- 18. 包私有類中的公共方法
- 19. 包私有類中的公共方法
- 20. Java中私有字段的可訪問性
- 21. 無法訪問靜態方法中的私有類成員?
- 22. 訪問兩個私有類的值java
- 23. 使javascript私有方法可以訪問它的公共方法
- 24. 在C中訪問私有方法#
- 25. 是否可以通過公共方法訪問私有類屬性?
- 26. 靜態方法可以訪問同一個類的私有方法嗎?
- 27. 通過javascript中的私有方法訪問私有變量
- 28. 如何在JavaScript的公共方法中訪問私有屬性?
- 29. 訪問通過靜態方法的私有變量在Java中
- 30. Java訪問修飾符 - 可用於子類和包的方法
如果該類是「final class SomeClass」,那麼成員可見性是否有關係? – kmccoy 2011-03-10 13:12:12
如果在將來的某個重構中刪除最終修飾符:)請記住,這是軟件,「final」並不意味着「set in stone never to change」,它表示「不能從該類型派生子類,因爲它被寫入馬上。」 – 2011-03-10 22:23:55