一、文件打包

1.打包的目的:便于管理
包的本质实际上就是一个文件夹。包体现了封装性,因为在一个包中的类只能被包内的其它类所看见,外部是不可见的。
2.打包的定义(代码首行中定义)

package 包名;
  eg:package com.xunpu.java

   说明:包名是文件所在的父目录。
3.打包编译命令
  

javac [-encoding UTF-8] -d. 类名.java [类名.java];   
选项说明:-d  生成目录,根据包名的定义生成。         
         .  表示在当前目录下生成目录。
 eg:package com.xunpu.java;//就会生成java文件夹,其中java文件夹在xunpu文件夹下,xunpu文件夹在com文件夹下。

4.运行命令
  

java 全限定名(包名.类名);

二、包的导入

1.目的:当需要调用其它包中的类(属性或方法)时使用。
2.导包命令

import 完整类名;

说明:完整包名即包名.类名,也就是全限定名。该命令只会导入一个类。如果要导入 一个包中的多个类,用通配符“*”完成。
3.特殊命令

import 包名.*;

eg: import java.util.*;
说明:这并不意味着要将包中的所有类所导入,而是根据需要导入。
4.不同包但相同类名时,容易产生编译上的歧义,因此我们一般使用类的全限定名区分

三、public class与class的区别

(1)名称:public class的类名应该和文件名一致;而class的类名可以自定义。但是首字母都应该大写。
(2)个数:public class在一个文件中有且只有一个;而class在一个java文件中可以有多个。
(3)访问权限:public class类可以被其它包中的类所访问;而class类只能被同一包中的类所访问。

四.系统常用包

1.    java.lang;  系统常用基础类,JDK自动导入。
2.    java.lang.reflect;   Java反射编程包
3.    java.net;  网络编程开发包
4.    java.sql;  数据库开发的支持包
5.    java.util;  工具程序包
6.    java.io;  IO编程包
7.    java.awt; 界面开发包

五、访问权限修饰符

访问权限修饰符有public、protected、default、private。它们的关系为:public>protected>default>private

访问权限

范围

public

protected

default

private

同一包中的同一类

Yes

Yes

Yes

Yes

同一包中的不同类

Yes

Yes

Yes

No

不同包中的子类

Yes

Yes

No

No

不同包中的非子类

Yes

No

No

No

注意:不同包中的子类可以访问父类中的被protected修饰的属性或方法。
如:

package Parent;

public class Father {
    protected String msg="I am father";//可以被不同包中的子类访问。
}
package Child;

import Parent.Father;

public class Son extends Father {
    public void print() {
        System.out.println(super.msg);
    }
}
import Child.Son;

public class Test {
    public static void main(String[] args) {
        Son son=new Son();
        son.print();
    }
}
结果:I am father

 

 

 

六、jar命令

jar命令用于将生成的程序类打包为.jar    .class的压缩文件
jar命令的参数有:
    c    创建新档案
    f    指定档案文件名
    v    在标准输出中生成详细输出。

使用:

1.打包进行程序编译:javac -d. Hello.java
2.将生成的程序类打包为jar文件:jar -cvf Hello.jar Hello.class