Java 内部类机制

内部类(inner class)是定义在另一个类中的类。为什么需要使用内部类呢?其主要原因有以下三点:

1.内部类方法可以访问该类定义所在的作用域中的数据,包括私有的数据。

2.内部类可以对同一个包中的其他类隐藏起来。

3.当想要定义一个回调函数且不想编写大量代码时,使用匿名(anonymous)内部类比较便捷。

4.只有内部类可以是私有类,常规类只可以具有包可见性或者公有可见性。

5.在外围类的作用域之外可以这样引用内部类:OuterClass.InnerClass 。

6.局部内部类在一个类的方法中定义,不能用public或private访问修饰符进行声明,它的作用域被限定在声明这个局部类的块中。并且除了定义它的方法,没有任何方法知道它的存在,即使外围类的其他方法也不能访问它。

7.匿名内部类:只创建这个类的一个对象,就不必命名了,所以叫做匿名内部类。通常的语法格式为:

new SuperType(construction parameters){

  inner class methods and data

}

由于匿名类没有类名,所以也就不能有构造器(构造器命名必须与类名相同)。取而代之的是,将构造器参数传递给超类构造器。在内部类实现接口的时候不能有任何的构造参数:

new InterfaceType(){

  methods and data

}

8.静态内部类:有时候使用内部类只是为了把一个类隐藏在另一个类的内部,并不需要内部类引用外围类对象,为此,可以将内部类声明为static,以便取消产生的引用。

值得注意的是,只有内部类可以声明为static

9.声明在接口中的内部类自动成为static和public类。

值得注意的是,嵌套是一种类之间的关系,而不是对象之间的关系,也就是说,外围类的对象并不一定包含内部类的对象。

 

posted @ 2015-11-15 19:33  wewalk  阅读(224)  评论(0编辑  收藏  举报