Java中的封装之我见(一)
以下是我对Java中封装概念的一点理解,不一定正确希望大家多指正。
封装就是将客户端不应看到的信息包裹起来。使内部执行对外部来看不一种不透明的、是一个黑箱,客户端不需要内部资源就能达到他的目的。下面让我们从不同角度对封装加以分析。
以最终客户的角度来看,.jar文件就是一种封装,他们不需要知道.jar文件中有多少个.class文件,每个文件中的功能与作用,同样可以得到他们希望的结果。除jar以外对于J2EE来说还有war和ear。区别见下表:
JAR
WAR
EAR
英文
Java Archive file
Web Archive file
Enterprise Archive file
包含内容
class、properties文件,是文件封装的最小单元
Servlet、JSP页面、JSP标记库、JAR库文件、HTML/XML文档和其他公用资源文件,如图片、音频文件等
除了包含JAR、WAR以外,还包括EJB组件
部署文件
application-client.xml
web.xml
application.xml
级别
小
中
大
下面主要以程序员的角度分析:
从几个关键字说起:
1、 package和import允许我们做的事情是分割单个全局命名空间,保证我们不会遇到名字的冲突1。由此可Java将每个class文件封装在不同的命名空间中,使外世的类与该类和与该类有关的类分隔开来。
2、 private(私有):修饰的属性或方法只能被该类自身所访问和修改,而不能被任何其他类(包括该类的子类)来获得和引用。它提供了最高的保护级别。
3、 friendly(友好):不指定访问指示符即没有关键字描述,是缺省的,缺省的元素拥有包访问权限。由于一个编译单元只能从属于单个包,所以单个编译单元内的所有类相互间是自动“友好”的。
4、 protected(受保护):用protected修饰的成员可以被三种类所引用:1)该类自身、2)与它在同一个包中的其他类、3)在其他包中的该类的子类。
5、 public(公共):它具有被所有包中的类访问的可能性,只要这些其他包中的类在程序中使用import关键字引用该类。用public修饰会造成安全性和数据封装性下降。
修饰符
同类
同包
子类
通用性
封装级别
public
是
是
是
是
1
protected
是
是
是
2
frendly
是
是
3
private
是
4
由此可见访问控制符为隐藏实施细节提供了一种方式,使代码级的对类、方法、属性的封装成为可能。用包控制符和访问控制符只是封装的手段,由此方式可以抽象出四种形式。那就是类的封装、对象的封装、方法的封装和属性的封装