面向对象——包

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 被解压包名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值