包的基本概念
为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。
包的作用
- 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
- 如同文件夹一样,包也采用了属性目录的存储方式。同一个包中的类名字是不同的包中的类是可以想用的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。
- 包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。
Java使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类(class)、接口、枚举(enumerations)和注释(annotation)等。
例:包的定义
package 包名称.子包名称;
创建包
创建包的时候,你需要为这个包去取一个合适的名字。之后,如果其他的一个源文件包含了这个包提供的类、接口、枚举或者注释类型的时候,都必须将这个包的声明放在这个源文件的开头。
包声明应该在源文件的第一行,每个源文件只能有一个包声明,这个文件中的每个类型都应用于它。
如果一个源文件中没有使用包声明,那么其中的类,函数,枚举,注释等将被放在一个无名的包中。
例:实例
package charjava; // 定义一个包
class Demo { // 定义Demo类
public String getInfo() { // 返回信息
return "Hello World!";
}
}
public class java23 {
public static void main(String[] args) {
System.out.println(new Demo().getInfo()); // 实例化本包对象
}
}
import语句
两个类是存放在同一个包中的,因此代码与之前没有什么根本的不同,但是如果几个类存放不同的包中,则在使用类的时候就必须通过import语句导入。
例:类的导入
import 包名称.子包名称.类名称 // 手动导入所需要的类
import 包名称.子包名称.*; // 由JVM自动加载所需要的类
例:定义java1.One类
package Demo;
public class One {
public String getInfo() {
return "Hello World!";
}
}
例:在另外一个类中引用One类
package charjava;
import Demo.One;
public class java24 {
public static void main(String[] args) {
System.out.println(new One().getInfo());
}
}
系统常见包
在JDK中为了方便用户开发程序,提供了大量的系统功能包。
序号 | 包名称 | 作用 |
1 | java.lang | 此包为基本的包,像String这样的类就都保存在此包中,在JDK1.0D的时候如果相编写程序,则必须手工导入此包,但是随后的JDK解决了此问题,所以此包现在为自动导入 |
2 | java.lang.reflect | 此包为反射机制的包,是java.lang的子包,在Java反射机制中将会为读者介绍 |
3 | java.util | 此包为工具包,一些常用的类库、日期操作等都在此包之中,如果把此包掌握精通各种设计思路都好理解 |
4 | java.text | 提供了一些文本的处理类库 |
5 | java.sql | 数据库操作包,提供了各种数据库操作的类和接口 |
6 | java.net | 完成网络编程 |
7 | java.io | 输入、输出处理 |
8 | java.awt | 包含了构成抽象窗口工具集的多个类,这些类被用来构建和管理应用程序的图形用户界面 |
9 | javax.swing | 此包用于建立图形用户界面,此包中的组件相对于java.awt包而言是轻量级组件 |