2013-11-23 54 views
0

我厭倦了創建一個包含一個公共類和一個包含多個公共類的包,然後通過另一個包導入它們,並且這兩個程序都可以工作。我瞭解其中的差異,首先我只能使用一個公共類的方法,但是該類可以在其包中使用其他類,並且當更多類是公共類時,我可以通過外來程序包直接訪問所有這些類。java包應該只有一個公共類嗎?

現在當我們導入java.util.Scanner,並且我們導入的java.util.ArrayList不是這個包嗎?當我們用一個公共類導入我們的包時,它只顯示一個公共。這意味着java.util有多個公共類,或?

那又是什麼java。意思是,它是否使我的包和java庫包有所不同?

+0

當您爲Java創建源代碼文件時,通常稱其爲編譯單元(有時是翻譯單元)。每個編譯單元必須有一個以.java結尾的名稱,並且在編譯單元內可以有一個公共類,該類必須與該文件具有相同的名稱(包括大寫,但不包括.java文件擴展名)。每個編制單位只能有一個公開課;否則,編譯器會抱怨。 – STEFS

+0

如果該編譯單元中有其他類,則它們在該包之外被隱藏,因爲它們不是公共類,它們構成主要公共類的「支持」類。 這是布魯斯埃克爾的形式。這是否意味着每個公共課程都將獲得自己的文件,但不是公共課程? – STEFS

+0

@StefS:對於嵌套類(即在其他類中定義的類)來說,現在還太早。從學習基礎知識開始,現在考慮每個類必須在自己的文件中定義。只有當你熟悉這些基礎知識時,才能閱讀關於嵌套類的Java教程。 –

回答

2

是的,一個包可以有多個public類。

爲每個public類創建一個新包將非常麻煩,並且根本不提供任何概述。

java.只是JDK/JRE附帶的標準庫。

包真的就像系統上的文件夾一樣。您可以在一個文件夾中有多個文件沒有問題。

通常,軟件包的構造方式是將相關類組合起來,使開發人員更容易。如果你根本沒有任何軟件包,或者你想爲每個課程增加一個新的軟件包,那沒關係。你會成爲你自己最大的敵人,但它肯定是可能的。

0
import java.util.ArrayList; 

意味着:讓我用類ArrayList,這是在包java.util,僅輸入ArrayList而不是java.util.ArrayList

java.util是包的名稱,沒有別的。這是Java開發人員選擇存儲ArrayList類的地方。它與任何其他軟件包名稱沒有區別,除非您不允許將java軟件包用於您自己的類,因爲它是爲標準Java類保留的。

import java.util.*; 

意味着:讓我輸入它們的簡單名稱(ArrayListLinkedListCollection等)使用包java.utilArrayListLinkedListCollection等)的所有類,而不是他們的全名(java.util.ArrayList,java.util.LinkedList,java.util.Collection等)

所有這些類都是公共的(如他們的javadoc中記錄的)。如果他們不公開,你將無法在自己的班級中使用它們。

相關問題