天天看点

包的定义及使用

       包实际上就是一个文件夹,在程序中使用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,如需转载请自行联系原作者