重构(重写代码)已优化实现是非常现实的需求,但必须让使用者不受影响。
Java提供访问权限控制让类库开发者向客户端程序员指明哪些可用,哪些不可用!
6.1package:类库单元
包内的一组类被组织到一起
用import语句导入某个类或某个包
每个.java源程序包只能有一个public类,类名与文件名相同,其他类外部不可见,为public类提供支持
6.1.1代码组织
类库实际上是一组类文件.class,每个文件都有一个public类以及任意数量的非public类。使用package语句将同一群组的类文件组织到一起。
package必须是第一行非注释代码
import实质上是导入编译好的类文件以直接使用类!
6.1.2创建独一无二的包名
Internet域名反顺序
import标准类库编译器根据环境变量查找类文件,否则需要在编译时指定类文件位置,或用ide导入
冲突:若导入两个相同的类并使用,则CE,需手动指明!
6.1.3 定制工具库
可以写自己的工具库
静态导入:导入一个方法或字段等,导入的东西本身是静态static的?
6.1.4 用import改变行为
用package调试???
6.2Java访问权限修饰词
public,protected,private主要修饰成员
如果不提供访问权限修饰词,则默认为“包访问权限”
6.2.1包访问权限
包内为public,包外为private
class可用的修饰词为:public,abstract,final
6.2.2public
6.2.3private
使用默认权限的方法,客户端程序员也无法访问,设计时考虑将提供给客户端程序员的方法设为public
private仍然非常重要,尤其在多线程环境下。
好的oo设计应将所有的域设为private,提供get和set方法。
6.2.4protected
处理的是继承的概念。
protected也提供包访问权限(protected类还提供给其他包中的子类,所以比包访问权限要宽松 )
子类会自动调用父类的构造器
6.3接口和实现
访问权限控制是为了对具体实现隐藏,该特性在oo中成为封装。
接口和实现分离。客户但程序员只能向借口发送信息。可以随意修改非public的东西?
不知道在讲什么。。。
6.4类的访问权限
包或public