本篇博客主要介绍Java的包的相关知识。包的导入、包的创建和包权限等。
包
包(package)是组织类的一种方式。
包的作用:
- 把具有一定关联的类,放到同一个目录中。更好的组织代码。
- 把同名类放到不同的包中,包就起到了类似于C++中命名空间的作用。
导入包中的类
- Java中已经提供了很多现成的类供我们使用。例如:
可以看到我们可以使用java.util.Arrays这样的方式来使用java.util包中的Arrays类,但是这种写法比较麻烦。 - 我们还可以使用import语句来导入包。
- 如果想要使用java.util包中类,我们可以使用
import java.util.*
。
但是不推荐使用这种方式,很容易出现冲突的情况。更推荐显示指定要导入的类名。
我们来看一下冲突的情况:
java.util
包和java.sql
包中都有Date类,我们编译运行来看一下:
这种情况下需要使用完整的类名:
- 静态导入:使用import static可以导入包中静态的方法和字段,可以直接导入到方法和字段的级别。
注意:①方法必须是静态。②如果有多个同名的静态方法,容易不知道使用谁?这个时候要使用必须加前缀。由此可见,import static的意义不大,一般不用。但是要能看懂。
注意:import和C++的#include差别很大。C++必须使用#include来引入其他文件内容(会将头文件中的所有内容直接拷贝过来),但是Java不需要。import只是为了写代码的时候更方便。import更类似于C++的namespace和using。
将类放到包中
将类放到包中的规则基本如下:
- 在文件的最上方加上一个package语句指定该代码在哪个包中;
- 包名需要尽量指定成唯一的名字,通常会用公司的域名的点到形式(例如:com.baidu);
- 包名要和代码路径相匹配,例如创建com.baidu的包,那么会对应创建一个对应的路径com/baidu来存储代码;
- 如果一个类没有package语句,则该类被放到一个匿名包中,所有的匿名包是同一个包。
操作步骤:
- 右键src -> 新建 -> 包。
- 输入包名。
- 右键包名 -> 新建 -> Java类。
- 输入类名。
- 我们看一下工程中的结构和实际目录中的结构。
- 运行结果如下:
包的访问控制权限
- 我们已经了解了类中的public和private权限。private成员只能被类的内部使用,public成员可以在任意处被使用。
- 如果一个成员不包含访问控制权限关键字(public、private等)。则认为这个成员具有包访问权限。
- 具有包访问权限的成员只能在当前类和同一个包的类中使用。
下面来看一个例子:
- 我们在com.sss包中创建两个类,一个Num类和一个Test类;我们在Num类中创建一个包访问权限的变量,然后在Test类的main方法中实例化一个Num类的对象n,然后直接去访问对象n中的包访问权限的变量。
常见的系统包
java.lang
。
提供常用的基础类(String、Object等),此包从JDK1.1之后自动导入。java.lang.reflect
。
Java反射编程包。java.net
。
进行网络编程的开发包。java.sql
。
进行数据库开发的支持包。java.util
。
Java提供的工具程序包,非常重要。java.io
。
I/O编程开发包。