面向对象——包

来源:互联网 发布:windows 触摸板 增强 编辑:程序博客网 时间:2024/05/18 11:25

10.面向对象――包

10.1包的作用

包在windows中就是指文件夹,包能够对Java中的类文件进行管理,同时能提供多层的命名空间,也是一种封装形式.

Java的类文件,存放到指定的包中,可以存放在一个包中,也可以存放在多层包中,使用关键字package,必须写在第一行.

如:package包名;

这里的包可以有多个,多个包时,用“.”点分隔,形成多层的包。最底层包存放类文件。

如:package packa.packb.packc;最底层包packc存放的类文件。

如果在代码中定义了包,需要在编译是加上参数,才能生成包目录。

格式:javac –d  (指定存放包的目录,“.”代表当前目录源文件名.java

 

生成包后,如果想运行类文件,必须指定类文件所在的一级级的包目录,用“.”点分隔。

格式:java packa.packb.packc.类文件名

如果,直接去最底层包packc中运行的话,会报错,NoClassDefFoundError找不到类文件。

如:

package mypack.pack.packa;//定义类文件存放的包。public class Demo{       public static void main(String[]args){              System.out.println("Hello world");                    }     }/*编译:javac –d . Demo.java  存放在当前目录。运行:java mypack.pack.packa.Demo 打印结果:Hello world*/

 

注意:不同的包之间互访,包中的类必须是public,被访问的类的方法,也必须是public的。

不同的包之间是可以继承的,前提是权限的问题。

 

权限名

public

protected

默认权限

private

同一类中

同一包的不同类中

 

不同包的子类中

 

 

不同包中

 

 

 

10.3包的导入

Java的核心包java.lang包中的内容,jdk1.2后是默认自动导入的,但是如果在当前包中的程序,使用了其他包中的类,就需要手动导入.

使用关键字:import 

导包格式:import 包名.包名...类名;

如果想导入包下所有的类:import包名.包名...*

如果一个类中,所有的成员都是静态的,可以使用静态导入,这些在调用时,直接写成员名,不用再写类名.成员.

如:import static包名.包名......类名.*;

调用时,直接写成员名就可以了.

 

10.2 jar

java中的jar包,类似于windows中的压缩包,如:zip,rar

jar工具的好处,就是可以将多个包目录,进行打包为jar包.

格式:

jar cvf 指定包名.jar 指定被压缩的目录1 指定被压缩的目录2….

当存放有字节码文件的包目录被打成jar包后,不需要解压只需要将classpath设置成jar包所在路径就可以了,可以直接运行,这是jar包的好处.

如:

G:\>set classpath

classpath=g:\j.jar

 

G:\>java packa.packb.packc.Demo

Hello world

 

当然,也可以使用jar命令对jar包进行解压

格式:jar xvf 被解压包名

原创粉丝点击