1. 在一个类中定义另一个类,这个类就叫内部类或内置类(inner class)(310.swf)
2. 内部类可以让我们将逻辑上相关的一组类组织起来,并由外部类(outer class)来控制内部类的可见性。
3. 当我们建立一个inner class时,其对象就拥有了与外部类对象之间的一种关系,这是通过一个特殊的this reference形成的,似的内部类对象可以随意的访问外部类中所有的成员。
4. 在其他类中,调用另一个类的内部类,要用该类名.内部类名Outer.Inner
New时也要用Outer.Inner inner=outer.new Inner();//要针对一个对象
5. 当在方法内部区定义一个类的时候,如果说在类当中,要区访问方法中的参数或方法中定义的局部变量(也可以叫做本地变量),必须将其声明为final(常量),才可以在类的内部区访问,否则,会报错。
6. 若一个类的修饰符是final,则代表该类不能有派生类
7. 若内部类声明为static,则不能访问外部类中的非静态成员或方法,只能访问静态的成员或方法
访问静态成员时,直接 外部类名+成员名
8. 易错:非静态类中,不能定义静态的方法
9. 在方法中定义的内部类,如果要访问方法中定义的本地变量或方法的参数,则变量必须被声明为final
10. 内部类可以声明为private或protected;还可以声明为abstract或final
11. 内部类可以声明为static的,但此时就不能在使用外部类的非static的成员变量和非static的成员方法;
12. 非static的内部类中的成员不能声明为static的,只有在顶层类或static的内部类中才可以声明static成员。
13. 匿名类
return new Animal()
{
public void eat()
{
System.out.println("animal eat");
}
public void sleep()
{
System.out.println("animal sleep");
}
};
14. 在内部类(inner class)中,可以随意的访问外部类的成员,这可以让我们更好地组织管理我们的代码,增强代码的可读性。
15. 内部类可以用于创建适配器类,适配器类是用于实现接口的类。使用内部类来实现接口,可以更好地定位于接口关联的方法在代码中的位置。
16. 在外部类中,如果想访问内部类中的成员,需要首先产生内部类的一个成员,然后利用这个对象去引用它的成员
17. 可以用内部类去实现接口,来隐藏实现的细节
18. C++的多重继承在使用的时候经常会出现一些问题,而在java中使用接口和内部类就能很好的避免这些问题