-
包:库单元
- 包内包含有一组类,他们在单一的名字空间下被组织在一起。
- 通过import
***.***.*
可以将某个包下的所有类导入到当前文件中。
- 每个Java源文件最多只能有一个public类,且名称必须与文件名相同。源文件中的其他类在包外事不可见的,主要用来为public类提供支持。
- Java的可运行程序是一组可以打包并压缩为一个Java文档文件(jar)的.class文件。
- package 和import可以将单一的全局名字空间分割开,使得无论多少人使用Java编写类,都不会出现名称冲突问题。
- 可以通过package创建自己的工具包,并通过
import static
导入静态方法。
- 利用import可以实现选择性编译的功能。
- Java虚拟机可以通过classpath+包名的方法寻找到.class文件的位置。
- 包名隐含地指定了目录结构。
-
Java访问权限修饰词
-
包访问权限
- 不加修饰词的为包访问权限。
- 当前包中的所有其他类对该成员或方法都可访问,但对包外而言是私有的。
- 由于一个.java文件只能属于一个包,因此在一个.java文件中的所有类彼此之间都可以访问。
- 如果没有明确设置package,那么java会默认该文件夹下的.java文件都默认属于该目录的默认包,都享有包访问权限。
-
public:接口访问权限
-
private:无法访问
- private允许创建者随意改变该成员,而不必考虑这样做是否会影响到包内其他的类。
-
protected:继承访问权限
- protected 提供包访问权限和派生类访问权限。
-
接口和实现
- 访问权限的控制被称为"具体实现的隐藏"。
- 将数据和方法包装进类中,并将具体实现隐藏的过程称为封装;
- 访问权限控制将接口和具体实现分离。客户端程序员只能通过public方法向接口发送信息,因此类开发者可以任意修改不是public的内容。
-
类的访问权限
- 每个编译单元只能有一个public类,表示只能有单一的公共接口。
- 每个编译单元可以不存在public的类,此时文件名可以任意取。
- 类访问权限不能是private和protected(内部类除外)。
- 非public类内部如果存在静态public成员的话,仍然可以在外部访问该成员而不会创建对象。
-
总结
- 访问权限控制的原因
- 一是可以使客户端程序员了解到类的哪些部分对他们是有用的,哪些部分是没用的,简化他们对类的理解
- 二是可以使类库设计者随意地更改类的内部工作方式,而不用担心对客户端程序员产生重大的影响。