2014-12-09 20:14:52
访问权限控制
1、访问权限控制出现的原因
代码需要不断的重新创作才能变得完善。
要完善的公用代码(如:类库)已经被客户程序使用,修改后,可能会影响客户程序的功能。
添加约定规范,规定可能需要修改的公用代码不能被客户程序使用。
这些约定规范利用访问权限控制来实现。
2、访问权限控制的实现方法:提供访问权限修饰词
权限由大到小:public,protected,包访问权限(无关键词),private
3、包出现原因
防止类的命名冲突,利用命名空间的不同来帮助解决类名冲突
4、包是什么?
包就是一个单位命名空间。
存在于单一目录中的类,默认位于默认包中。
整个命名空间就是,环境变量CLASSPATH的值指定的目录。每个目录又以包为单位分成了若干单位命名空间。
5、每个包(库)实际上就是一组类
每个编译单元(.java)有且只有一个public类。编译后,编译单元中定义了几个类,相应就会产生几个.class文件。
6、分割出命名空间(打包类)
package coreservlets;
package语句必须放在文件中除了注释之外的第一句
7、使用命名空间
import java.util.*;
使用类时,必须指明是哪个命名空间的类。
编译时,javac遍历CLASSPATH指定的目录,寻找导入的命名空间。
8、package和import存在的意义:分割命名空间,避免名称冲突
9、如何创建独一无二的包名
包名都使用小写(java是大小写敏感语言)
惯例:创建者Internet域名反序+自定义包名
eg:有域名MindView.net,则可以设置包名为:net.mindview.simple,此包存放目录:CLASSPATH/net/mindview/simple
10、使用jar文件时,不止要指明它所在位置的目录,要将它的实际名称写清楚
11、不同命名空间内有名字相同的类时,若被同一文件导入,则在使用此类时,用全称限制名,即包名+类名。示例程序ch601
12、创建自己的类库,放在CLASSPATH指定的目录下
13、java中,无条件编译,因为跨平台
14、java调试技巧
发布版本中无调试信息,开发版本中有调试信息。
通过导入不同的包来实现。
例如:两个包debug和debugoff,两个包中有相同的类,debug包中的类可以打印调试信息,若不需要打印调试信息,则导入另一个包。
示例程序:ch602
15、访问权限修饰词:public,protected,private及‘不提供修饰词’
16、默认包:处于同一目录路径且未限定任何包名称 的文件,自动归属到该目录的默认包中。
17、public:可以被所有类对象访问
protected:可以被子类对象访问
不提供修饰词:可以被同包内的类对象访问
private:只能被本类对象访问
18、权限控制就是让类的制作者控制此类哪些能被客户端程序使用,哪些不能被客户端程序使用。能被使用的就被封装成接口,而具体实现不能直接被使用。总之,访问权限控制+接口与实现的分离=封装,大大增加了程序的可维护性。
19、使用时需要注意的几点:
每个编译单元最多只能有一个public类,也可以没有public类
public类的类名必须与编译单元名相同,大小写敏感