包的定义及使用

简介:
       包实际上就是一个文件夹,在程序中使用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() ;
                    ^
错误
注意:
       如果一个类想被包外的类所访问,则此类必须声明为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() ;
                              ^
错误
       虽然此时TestHellomy.jar在同一个文件夹之中,但是如果要想正确的使用*.jar的文件,则必须设置classpathset classpath=e:\testjava\my.jar;.









本文转自 李兴华 51CTO博客,原文链接:http://blog.51cto.com/lixinghua/96929,如需转载请自行联系原作者
目录
相关文章
|
编译器 C++
【c++11】新的类功能和可变参数包
【c++11】新的类功能和可变参数包
|
3月前
|
缓存 Go
Go引用包版本更新但是被引用的包的子包并没有出现在vendor中的问题和解决方案
文章讨论了在Go模块项目中升级依赖包版本时遇到的子包未出现在vendor目录的问题,并提供了直接删除旧版本引用并重新执行`go mod vendor`的解决方案。
36 0
|
3月前
|
编译器 Go 开发者
|
5月前
|
JavaScript 中间件
包代码
包代码
33 7
|
6月前
|
开发者 Python
|
SQL Java API
包的使用及其创建
包的使用及其创建
68 0
|
6月前
|
Go
Go语言导出包解密:外部访问你的类型和值
Go语言导出包解密:外部访问你的类型和值
92 0
|
6月前
|
Java 数据安全/隐私保护
类,封装,包
类,封装,包
48 0
|
11月前
|
Python
python的模块,包和目录的区别和自定义包的注意点
先插入模块/包是怎么找的 先找当前的包找有没有,没有去安装目录的内置函数中,再没有看看你设置的系统环境变量有没有 一般情况,代码添加的环境变量只存在当前窗口,关闭就没了-
117 0
|
JSON 数据格式 Python
24.从入门到精通:__name__属性 dir() 函数 标准模块 包 从一个包中导入*
24.从入门到精通:__name__属性 dir() 函数 标准模块 包 从一个包中导入*