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  |   
由此可见访问控制符为隐藏实施细节提供了一种方式,使代码级的对类、方法、属性的封装成为可能。用包控制符和访问控制符只是封装的手段,由此方式可以抽象出四种形式。那就是类的封装、对象的封装、方法的封装和属性的封装  
 
  |