一、文件打包
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