Java自学笔记系列八:封装(四) 内部类

 

  java重要的三大特性之封装,到今天已经总结完了,当然还有一些比较重要的概念没有总结,比如static,finally关键字,this关键字,构造函数的特性。因为考虑到,这些概念在继承多态中还会有体现,所以等到另外两大特性讲完之后,在统一总结。

  这里还有一个不常用的概念就是内部类。

 一,基本概念:

  就是在一个类的内部在定义一个类。
 
  存在即是合理的,内部类在JDK1.1之后便开始存在了,存在的原因是因为:
  

  1,可以让程序设计中逻辑上相关的类结合在一起.

  2,内部类可以直接访问外部类的成员。

  那么先看看它的优点和好处:

  1,内部类的对象能够访问创建它的对象的所有的方法和属性,包括私有数据。

  2,对于同一个包中的其它类来说,内部类是隐形的。
 
  3,匿名内部类可以很方便地定义回调。

  4,使用内部类可以很方便地编写事件驱动的程序。


 二,结构特点:

  
  
  
  
  1. class outerClass{ 
  2.       //outerClass的成员变量 
  3.  
  4.      class innerClass{ 
  5.     } 
  6.  
  7.   } 


  内部类同样可以拥有public private protected等权限符修饰,因为它仅仅是外部类的一个成员变量。

 
三,实例化:

  
  
  
  
  1. outerClass oc = new outerClass(); 
  2. outerClass.innerClass ic = oc.new innerClass(); 


  so prefect!


内部类对与初学者很少使用,了解它的存在即可。 四,分类: 根据内部类的存在方式还可以细分为以下几种:

1,局部内部类:将类直接定义到外部类的方法体之中,与局部变量有着相同的作用域。

2,静态内部类

   若该内部类不想访问创建其外部类的属性和方法的时候,可以将其设置位静态类,这就是静态内部类。
外部类要引用他时,就可一不必创建对象,直接引用。在静态内部类中只能访问外部类的静态成员。
构造静态内部类对象,不再构造外部类对象。


3,匿名内部类:(这个用的多一些,在SWT程序设计中,事件监控器代码中比较常见)

    在编写代码的时候不必要给内部类取一个名字,可以直接以类的对象名来代替。
在SWT编程的事件监控器代码中,会大量使用匿名内部类,这样会可以大大的简化代码的编写,并增强了代码的可读性。

如示例:
 
  
  
  
  
  1.  Object o = new Object(){ 
  2.  
  3.     public String toString(){ 
  4.  
  5.        retrun "这只是几行无聊的代码罢了!"
  6.     } 
  7. }; 

该示例定义了一个没有名称的类,它继承了Object类,并重新定义(Override) toString(),new表示实例化了这个没有名称的类。

<封装特性中需要注意的,笔者认为的暂时就总结这么多>,请高手更正!

 

你可能感兴趣的:(java,内部类,封装)