2013-07-22 76 views
12

首先,我正在嘗試使用Java,初學者指南,第4版來學習java。我使用Ubuntu作爲操作系統和Netbeans作爲IDE。在使用netbeans時,我需要創建一個項目來創建一個類。我是否必須在每個類中使用「包」術語

這是我的你好世界應用程序。

class First{ 
    public static void main(String args[]) 
    { 
     System.out.println("Hello!"); 
    } 
} 

但是這會返回很多錯誤。當我把package first;行放到我的java類的最上面時,它會運行。但書沒有使用包術語。這是NetBeans的規則,還是我需要知道的這個?

+1

它是一個名稱空間聲明,Java特定的,而不是Netbeans的要求。 http://en.wikipedia.org/wiki/Java_package –

+1

好吧,我明白了。當我將我的課程從包裝中移出時,我不需要使用包裝術語。 – Yusuf

回答

15

你從來沒有需要把一個類放在一個包中。但是,它幾乎總是一個好主意。這是Netbeans積極嘗試鼓勵你去做的事情。

對於小項目,使用默認包(即根本沒有包)是可以的。但是,一旦你的項目增長並開始添加外部庫,就會發生不好的事情。如果其他人決定使用默認包並碰巧擁有一個同名的類,該怎麼辦?現在,既然你們都在同一個包裏,就會發生碰撞!

你的文件結構也應該反映你的包。也就是說,package com.myurl.helloworld中的文件應位於名爲com/myurl/helloworld的文件夾中。這是出於與上述相同的原因。另外,您可能還沒有在這裏學習,您不能從默認包中導入類,也不能在默認包類中使用包 - 隱私可見性修飾符。

10

這是因爲作者Java,新手指南,第4版最有可能使用「默認包」。這樣,你不必包含任何包。包是一個名稱空間聲明。

什麼是命名空間聲明!? 命名空間聲明只是一個用來組織類的包。舉個例子,如果你將要有多個類,比如說你的GUI和多個算法類,把它們混合在一起總是有點混亂。然而,將它們分類到不同的包中卻是一個出色的解決方案。

還有一個命名約定,如果其他人要看你的代碼,你應該遵循這個約定。包應該以頂級域名命名。我傾向於創建SourceForge上的項目,然後我結束了這樣的事情:

net.sourceforge.softwarename.securitynet.sourceforge.softwarename.gui等..

另外請注意,命名您的包時,你不應該使用大寫字母。更多信息here

在學習編程時,你會遇到很多像這樣的情況。他們都是遊戲的一部分。你只需要自己弄清楚一點。

我能爲你做的最好的就是推薦Eclipse。另外,在學習Java時,我建議你不要在所有的IDE中使用IDE!那是因爲你將學會獨立編碼。不過,這取決於你。

+1

你寫了一個很好的答案,但你實際上沒有向窮人解釋包裝是如何工作的。軟件包從一開始就一直在使用Java,所以忽略它的書並不是本書過時和過時的問題。切換到Eclipse(或任何其他IDE)不會被神奇地解決。 –

+1

你現在可以考慮消除厭惡嗎? – Scientious

+0

我寧願推薦使用您將使用的IDE,因爲您正在學習Java,這樣,您不僅僅是一隻猴子卡住記事本,而其他人都是高效的。 – ProfK

1

Package表示一個包含相關類和接口組的目錄。

軟件包是一個命名空間,它組織一組相關的類和 接口。從概念上講,您可以將軟件包視爲與計算機上的其他文件夾相似的 。您可以將HTML頁面保存在一個 文件夾中,另一箇中的圖像以及另一個文件夾中的腳本或應用程序。 因爲使用Java編程語言編寫的軟件可以是由數百或數千個單獨的類組成的 ,所以通過將相關類和接口放入包中可以使事物保持組織。

下面你可以找到關於Java包一些很好的討論:

1

不,你並不需要放在一個封裝成你的類,除非你將它導入另一個類,它將在它自己的文件中。這是受保護的類型變量在你不想讓它們私有而只希望子類(或子類)訪問它們時進入的地方。你也錯過了你的類的公開聲明,所以它應該看起來像

public class First{ 
    public static void main(String[] args){ 
      System.out.println("Hello!"); 
     } 


} 
相關問題