作用:
- 内部类可以让我们将逻辑上相关的一组类组织起来,并由外部类(outer class)来控制内部类的可见性。
- 当我们建立一个inner class时,其对象就拥有了与外部类对象之间的一种关系,这是通过一个特殊的this reference形成的,使得内部类对象可以随意的访问外部类中所有的成员。
注意:
- 内部类可以放置在外部类的方法、条件语句、语句块及类自身中,但无论内部类嵌套多深,其都可以访问外部类的所有成员
-
内部类可以声明为private或protected;还可以声明为abstract或final。
-
内部类可以声明为static的,但此时就不能再使用外部类的非static的成员变量和非static的成员方法;
-
非static的内部类中的成员不能声明为static的,只有在顶层类或static的内部类中才可声明static成员。
获取内部类对象的方法:
-
Outer.Inner inner = outer.new Inner()
-
Outer.Inner inner = outer.getInner()
说明:其中outer为Outer的一个实例,getInner()为Outer中定义的获取Inner对象的方法,实现如上代码。
应用:
-
一个类继承自一个内部类,则需要建立外部内的引用,代码如下:
-
内部类实现接口及匿名内部类,代码如下
-
通过内部类实现在C++中通过多继承才能实现的功能
或者
为什么使用内部类
-
在内部类中,可以随意的访问外部类的成员,这可以让我们更好地组织管理我们的代码,增强代码的可读性
-
内部类可以用于创建适配器类,适配器类是用于实现接口的类。使用内部类来实现接口,可以更好地定位于接口关联的方法在代码中的位置