JAVA编程思想读书笔记十一(内部类1)

来源:互联网 发布:威锋网mac论坛 编辑:程序博客网 时间:2024/06/05 10:58
内部类:
     在一个类里定义另一个类被称为“内部类” inner class ,内部类是一种非常有价值的特性,能让你在逻辑上将相互从属的类组织起来,并且在类的内部控制访问权限,但内部类与合成是截然不同的。
     除非在“宿主类(out class)” 的非static 的方法里面,无论你在哪里创建内部类的对象,都必须用outerClassName.innerClassName 的形式来表示这个对象的类型。
     当你将它上传到基类,特别是interface 的时候,就会发现内部类有它自己的特征。(实际上将对象上传给它所实现的接口与将它上传给基类是完全相同)这样任何人都不能看到或者访问到内部类了--也就是interface 的实现了。于是“隐藏实现”就变的轻而易举了。你所得到到,只是一个基类的或者interface的references。
   
    * 将内部类设置private后,所以除了这个包含这个内部类的类之外,其他的谁都不能访问这个类。如果将内部类设置成protected,那同属这个包的类 ,以及这个类的继承类,谁都不能访问这个类。实际上你根本不能将对象下传给private的内部类,(或者是pretected的内部类)除非你继承了这个类,由此,private 的内部类为类的设计者们提供了一种“能彻底杜绝【用具体的类型来编程的所引起的依赖性问题】”,并且完全将实现细节隐藏起来。此外,从客户程序员的角度看,扩展interface也是毫无意义的,因为它根本没法访问public interface 以外的方法。