回答
有一個什麼樣的package
意味着在Java中不同的尺寸。作爲區分內部類名稱和其他包中類名稱的容器,其等價物將是C++ namespaces
。
如,保證在同一個塊訪問非私有成員的類的一個單元,有在C++中沒有等價物。授予某個類的訪問級別獨立於定義該類的名稱空間。
如盤訂購你的源代碼的一種方式,沒有等價的,C++語言對代碼是如何存儲在文件中沒有要求。
關於C++庫,更接近Java中jar
文件。它們將不同的類分享一些關係。一個jar可以包含多個包,並且多個jar可以包含來自同一個包的類。與庫類似,它們可以包含來自不同名稱空間的類和/或不同庫可以包含來自相同名稱空間的類。
嚴格地說,我認爲C++中的名稱空間提供了相同的語義。
最接近的Java包在C++ namespaces。
它們可以嵌套到彼此,你需要明確聲明,您是using
他們或他們的內容的一部分。但是,它們不像Java軟件包那樣強制執行任何物理文件層次結構。
我想它與C++中的命名空間更相關。 Java和C++都使用庫。庫可以是任何獨立的一組類[可能是一個框架],可以在我們的代碼中訪問。
外部庫存在Java和C++。只是格式各不相同,Java中的.jar和C++中的.dll/.so。
包和名稱空間的用途與庫不同。通過允許用戶對源代碼進行邏輯分組,避免用盡名稱。
Java中的package
是類,接口和枚舉的命名空間。包名稱,一個點和類名形成一類的完全合格的類名:
com.example.hello.HelloWorldApplication
^--packagename--^ ^-----classname-----^
包名稱中的點有不同的含義,則名稱之間的點:這個例子中的前兩個點是部分包名,最後一個是分隔符。
應該牢記這一點,因爲關於軟件包名稱有一個常見的誤解:僅僅因爲名稱可以映射到分層文件夾結構,有些人認爲軟件包名稱也具有層次結構 - 情況並非如此: hello
不是example
的「子包」!
但是,創建一個簡單的映射文件夾和文件,一個類加載器可以簡單地採取完全合格類名,以斜線替換所有點和追加.class
得到一個類文件的相對路徑。
但是請注意,不需要文件夾/文件映射t加載類 - 我們可以創建一個從數據庫或遠程服務中獲取類的類加載器 - 文件夾/文件映射不會有任何意義那種情況。
- 1. 使用包含與C++共享庫
- 2. 如何打包C++與DLL和庫
- 3. 包括與Java
- 4. C庫包括
- 5. C++庫包括
- 6. 調用C++與Java應用程序庫
- 7. Netbeans Java庫包含
- 8. C++ eclipse庫包含
- 9. 庫的包含C++
- 10. 獲得從C++庫的字符串與它周圍的Java包裝
- 11. C#與Java?
- 12. Encoding.Unicode.GetBytes C#與Java
- 13. 與C和Java
- 14. 從C#與C++/CLI包裝
- 15. 與Boost C++庫
- 16. Java軟件包/庫函數
- 17. Android - Java軟件包和庫
- 18. Java包/類庫約定?
- 19. UnsatisfiedLinkError Java與Rxtx庫
- 20. Java RPC庫與capnproto?
- 21. Symfony(doctrine)數據庫與Java/C/C++服務器交互
- 22. 調用C,C++與Java
- 23. OCX庫與C#(ActiveX庫)
- 24. Selenium Webdriver與Java與C#
- 25. SQLite數據庫與C/C++
- 26. Java包VS C#組件
- 27. Java的String.getByte()與C#
- 28. 調用C++與Java
- 29. Java Socket與C#TcpClient
- 30. C++與Java(OpenMP的)
不幸的是我不知道C#庫是如何工作的,但是受保護的成員確實可以從包中看到,並且每個包爲類名定義了一個單獨的名稱空間,如果這就是您的意思。 – biziclop 2011-01-25 11:19:33