1、在一个类中定义另外一个类,这个类就叫做内部类或内置类 (inner class) 。inner class是一个独立的个体,与放在outer class外是一样的,分别占有不同的内存空间。所以内部类可以随意访问外部类中所有的方法和成员变量。
2、内部类可以让我们将逻辑上相关的一组类组织起来,并由外部类(outer class)来控制内部类的可见性(外部类.内部类)。在外部使用inner class对象不能直接用new产生,内部类如果想访问某个外部类成员,必须先生成一个外部类对象,然后通过这个对象再生成一个inner class object。
3、当我们建立一个inner class时,其对象就拥有了与外部类对象之间的一种关系,这是通过一个特殊的this reference形成的,使得内部类对象可以随意的访问外部类中所有的成员。内部类可以放在其它语句和方法中,无论嵌套多深,皆可随意访问外部类中所有成员。
4、在方法中定义的内部类,如果要访问方法中定义的本地变量或方法的参数,则变量必须被声明final。
5、内部类可以声明为private或protected;还可以声明为abstract或final。若为private,则只能在outer class内访问,不能在外部直接使用。
6、内部类可以声明为static的,但此时就不能再使用外部类的非static的成员变量和非static的成员方法;相当于切断了与outer class成员的联系,只能访问outer class中的静态成员或静态方法。
7、非static的内部类中的成员不能声明为static的,只有在顶层类或static的内部类中才可声明static成员。
我们为什么使用内部类?
A、在内部类(inner class)中,可以随意的访问外部类的成员,这可以让我们更好地组织管理我们的代码,增强代码的可读性。
B、内部类可以用于创建适配器类,适配器类是用于实现接口的类。使用内部类来实现接口,可以更好地定位与接口关联的方法在代码中的位置。
C、内部类的更多用法(匿名inner class实现一个接口,不过切记最后那个分号;实现继承和接口实现时出现同名方法的问题;实现多重继承的功能)