1.【重构】访问控制(或隐藏具体实现)与“与最初的实现并不恰当”有关
- 优秀的作者对其著作的某些部分直至重新编写的时候才变得更完美,编写代码也一样。
- 对代码进行反复优化重写,用更好的方式去实现相同的功能的过程就是重构
- 重构即重写代码,以使它更可读,更易理解,并因此更具有可维护性
2.客户端程序员和服务器端程序员
- 服务器端程序员:编写类库的程序员
- 客户端程序员:使用类库的程序员
3.访问控制权限的意义
- 为了把变动的事物和保持不变的事物区分开来
4.为什么要有访问控制权限和怎样区分开来呢,需要的实现的要求有哪些?
- 类库的开发者必须有权限对类库的代码进行修改和改进,但必须保证客户端程序员的代码不会因为这些改动而受到影响
- 类库开发者必须在改动是保证类库中类的方法(被客户端程序员调用到的)不得删除,必要的时候,方法的返回值都不能改变
- 类库程序员要知道类库中的那些方法和参数被客户端程序员调用了,这些方法和参数的类型返回值名字都不能被改变。
- 改动任何一个方法和参数都有可能破化客户端程序员的代码
5.包:库单元,import
- package 关键字:将构件捆绑在一个内聚的类库单元中,在java便一单元中放在除注释外的第一行,是包名的全名。
- 访问权限修饰词会因为类在同一包中还是不同包中受到影响
- 包内有一组类,他们具有同一个命名空间如,java.util下有ArrayList类,它的全名叫java.util.ArrayList,当然也有LinkedList
- import关键字,因为上面叫全名太长啦,所以用这个关键字引入命名空间,如import java.util.*;即引入这个命名空间下的所有类。
- 使用import关键字并不会对程序造成影响,如性能等等
- package和import将单一的全局名字空间分隔开(如com.yue.hello和com.shi.hello是不同的),防止出现名称冲突的问题。
6.编译单元
- 当编译一个Java源代码文件时,这个文件被称为编译单元,后缀 .java,文件名必须与类名相同。
- 每个编译单元内只能有一个public类,否则编译不通过
7.内部类
- 一个编译单元内除了public的类外的其他类
8.编译
- .java文件经过编译会产生一个同.java文件名相同的.class文件
9.(封装)
- 把数据和方法包装进类中,以及具体实现的隐藏,常共同被称作是封装。
- 1所产生的结果是一个同时带有特征(状态,参数)和行为(方法)的数据类型,也就是类。
10类的访问权限
- 每个编译单元都有单一的公共接口,用public 来实现。该接口可以按要求包含众多的支持包访问权限的类。
11.控制访问权限的作用
- 使客户端程序员不能碰触那些不该碰触的代码
- 让服务器端程序员可以在更改类库代码是不必担心对客户端程序员代码的影响。接口和实现隔离开来可以实现这一功能。
- 可以确保客户端程序员不会以来类库底层实现部分,也就是说,他们只调用接口就行啦。
总结
- 解决命名冲突:package关键字/包的命名模式和import。
- 访问控制权限专注于类库创建者和改类库的外部使用者之间的关系。