包的定義及使用

       包實際上就是一個文件夾,在程序中使用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(){

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

         }

};

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

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

package test.demo2 ;

// 導入所需要的包

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

public class Demo34{

         public static void main(String args[]){

                   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 錯誤

注意:

       如果一個類想被包外的類所訪問,則此類必須聲明爲public類型。

修改Demo.java,聲明爲public class

package test.demo1 ;

public class Demo{

         public void print(){

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

         }

};

       那麼一般情況下導包的語句要使用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{

         public static void main(String args[]){

                   Hello h = new Hello() ;

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

         }

};

       打包編譯出現了以下的錯誤:
TestHello.java:2: 軟件包 org.lxh.demo 不存在

import org.lxh.demo.* ;

^

TestHello.java:5: 找不到符號

符號: Hello

位置: demo.TestHello

                Hello h = new Hello() ;

                ^

TestHello.java:5: 找不到符號

符號: Hello

位置: demo.TestHello

                Hello h = new Hello() ;

                              ^

3 錯誤

       雖然此時TestHellomy.jar在同一個文件夾之中,但是如果要想正確的使用*.jar的文件,則必須設置classpathset classpath=e:\testjava\my.jar;.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章