天天看點

包的定義及使用

       包實際上就是一個檔案夾,在程式中使用package進行定義,文法如下:

package 包名 ;

       例如:把以下的程式放在一個包中:

package demo.test ;

public class Demo33{

         public static void main(String args[]){

                   System.out.println("Hello World!!!") ;

         }

};

       如果要想成功的使用以上包中的類,則必須在編譯的時候建立好相應的檔案夾。

       可以使用如下的指令編譯程式:

              javac -d . Demo33.java

              · “-d”:表示建立一個新的檔案夾,檔案夾的名字為package定義的名字

              · “.”:表示在目前所在的目錄中建立此檔案夾

       如果現在已經成功的編譯完之後,則在運作的時候就必須寫上完整的包.類名稱,如上面程式:

              java demo.test.Demo33,而不能說進入到目錄中執行。

       那麼也可以定義很多的包,例如,現在在test.demo1下建立一個Demo類,此Demo中有一個列印“Hello World”的方法。

package test.demo1 ;

class Demo{

         public void print(){

       那麼此時,要對包進行編譯。

       下面再建立一個Demo34.java的類,在此類中要使用Demo類。那麼也就是說要在Demo34.java中導入所需要的包.類。假設:Demo34.java定義在test.demo2中。

package test.demo2 ;

// 導入所需要的包

<b>import test.demo1.Demo ;   </b><b>à</b><b> </b><b>在此處導入了所需要的包</b><b></b>

public class Demo34{

                   new Demo().print() ;

       下面執行程式,觀察效果:出現了以下錯誤:

Demo34.java:3: test.demo1.Demo 在 test.demo1 中不是公共的;無法從外部軟體包中對

其進行通路

import test.demo1.Demo ;

                  ^

Demo34.java:6: 找不到符号

符号: 類 Demo

位置: 類 test.demo2.Demo34

                new Demo().print() ;

                    ^

2 錯誤

<b>注意:</b><b></b>

       如果一個類想被包外的類所通路,則此類必須聲明為<b>public</b>類型。

修改Demo.java,聲明為public class

public class Demo{

       那麼一般情況下導包的語句要使用import,那麼以上的代碼是分别導入的。如果要導入一個包中的類很多,則可以直接使用“*”代替,那麼實際上導入“*”與分别導入是一樣的,因為,它隻會導入自己所需要的類,不需要的類根本不會導入。

       但是一般情況下,如果做好了一系列的類,肯定要放在一個包中,而且不能把全部的*.class檔案給使用者,因為會很麻煩,是以在JAVA一般可以把所有的*.class打成*.jar的包,使用*.jar包就可以儲存全部要使用的*.class檔案了。

       建立Hello.java類

package org.lxh.demo ;

public class Hello{

         public String sayHello(String name){

                   return "你好," + name ;

       編譯完成之後,使用JAR指令打包:

              jar -cvf my.jar org

                     · “c”:建立新的檔案

                     · “v”:顯示詳細的資訊

                     · “f”:指定檔案的名子

                     · org:要打成*.jar的包名稱

       建立測試類:

package demo ;

import org.lxh.demo.* ;

public class TestHello{

                   Hello h = new Hello() ;

                   System.out.println(h.sayHello("張三")) ;

       打包編譯出現了以下的錯誤:

TestHello.java:2: 軟體包 org.lxh.demo 不存在

^

TestHello.java:5: 找不到符号

符号: 類 Hello

位置: 類 demo.TestHello

                Hello h = new Hello() ;

                ^

                              ^

3 錯誤

       雖然此時TestHello與my.jar在同一個檔案夾之中,但是如果要想正确的使用*.jar的檔案,則必須設定classpath:set classpath=e:\testjava\my.jar;.

本文轉自 李興華 51CTO部落格,原文連結:http://blog.51cto.com/lixinghua/96929,如需轉載請自行聯系原作者