早在2004年,當我在RIT參加CS課程的介紹時,我的教授非常努力地強調我們記得加入訪問修飾符。沒有它,默認訪問將是公開的,這是我記得教授說的。也許我的記憶錯了,教授實際上並沒有這樣說,但顯然現在並非如此。我想知道是否曾經有過這種情況,也許Sun在2004年後的某個時候改變了它?Java的默認訪問修飾符曾經是公開的
3
A
回答
2
自Java 1.0以來,沒有訪問修飾符的Java類一直是包私有的。
這裏是將JLS 1.0的適用部分中的鏈接:
如果一個類或接口類型聲明爲公共,那麼它可以通過任意的Java代碼可以訪問在其中它是包被訪問聲明。如果一個類或接口類型沒有被聲明爲公共的,那麼它只能從它聲明的包中被訪問。
對於內部類型的成員,它說:參考(類,接口,或陣列) 類型或類型的構造的
甲構件(場或方法)時,纔可訪問如果類型 可訪問並且成員或構造被聲明爲允許 訪問:
- 如果成員或構造聲明爲public,則允許訪問 。接口的所有成員都是隱式公開的。
否則,如果成員或構造被聲明保護,則 訪問只允許當下列中的一個爲真:
- 訪問成員或構造從包含在類的包內發生受保護的成員是 宣佈。
- 訪問發生在聲明受保護成員的類的子類中,並且訪問是正確的,如第6.6.2節中的 所述。
否則,如果成員或構造被聲明 私有的,則只有當它從它被聲明的類 內發生允許訪問。
- 否則,我們說有默認 訪問權限,只有在聲明類型的 包內的訪問發生時才允許訪問。
這意味着,如果留下,不用修改,一個類的成員/構造是包私有,不公開。接口
成員,雖然是從來沒有超過public
其他任何東西,所以將訪問修飾符他們不會改變任何事情(當然,如果你嘗試private
或protected
你會得到一個編譯錯誤),所以無論你記得教授說,它不適用於接口。
6
0
自啓動以來,默認訪問說明符對於類是package-private。從Java docs:
如果一個類沒有修飾符(默認值,也被稱爲 包私有),只在其自己的包是可見的(包 被命名爲相關類的羣體 - 你將學習關於他們在 後面的課程。)
在成員級別,您還可以使用公共改性劑或無 修飾符(包私營)剛剛與頂級類,並與 相同的含義。對於成員,還有兩個額外訪問修改器:private和protected。私人修飾符指定 成員只能在其自己的類中訪問。受保護的 修飾符指定該成員只能在其自己的 包中(與包私有一樣)以及另一個包中的 的子類訪問。
相關問題
- 1. Java默認訪問修飾符
- 2. Java訪問修飾符:無修飾符與「默認」
- 3. 瞭解默認訪問修飾符
- 4. Java 9中接口方法的默認訪問修飾符?
- 5. 什麼是本地類成員的默認訪問修飾符?
- 6. 什麼是VB6中屬性的默認訪問修飾符?
- 7. 什麼是默認的構造函數訪問修飾符?
- 8. 編譯中的Java默認修飾符
- 9. 訪問修飾符錯誤 - 儘管類是公開的
- 10. 繼承構造函數的默認訪問修飾符
- 11. C#Main()方法的默認訪問修飾符
- 12. 如何ReSharper的(R#)更改默認訪問修飾符內部
- 13. C#中枚舉的默認訪問修飾符
- 14. 公共和私人訪問修飾符
- 15. 什麼是Java類中的默認字段修飾符?
- 16. 在超類中使用默認修飾符的Java反射訪問方法
- 17. 爲什麼事件的訪問修飾符是默認保護的?
- 18. Typescript中公共類訪問修飾符的用途是什麼?
- 19. 默認訪問修飾符在UML設計中未示出7
- 20. Visual C#2010 Express:爲新類指定默認訪問修飾符?
- 21. 訪問修飾符 - 目的是什麼?
- 22. 軸故障:「服務類必須公開爲訪問修飾符」
- 23. 私有和公共java訪問修飾符基礎知識
- 24. 對包 - 私有作品的Java默認類訪問如公開
- 25. Java訪問修飾符優先
- 26. 在java中訪問'final'修飾符類
- 27. 關於java最終訪問修飾符
- 28. Java訪問修飾符的訪問範圍
- 29. LINQ2SQL生成的類中的默認構造函數的訪問修飾符
- 30. Delphi訪問修飾符
如果你正在談論接口中的訪問修飾符方法,它仍然是正確的。 – Tunaki
你有很長的記憶:) – ZhongYu
回到甚至進一步[Oak 0.2](https://en.wikipedia.org/wiki/Oak_%28programming_language%29)規範甚至說[以下內容](http:// aioo.be/mirrored/OakSpec0.2.pdf):「默認情況下,一個類中的所有變量和方法(包括構造函數)都是 private。」雖然這已經超過10年了:-)目前的範圍在[本表]中清晰可見(http://stackoverflow.com/a/33627846/276052)。 – aioobe