包的定义及使用

 包实际上就是一个文件夹,在程序中使用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;.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值