我对内部类有以下四个总结:
1.内部类的嵌套可以理解成类的链关系,在构造一个内部类(非static)的实例的时候,会将直接外层类的实例作为参数传进构造函数,而外层类的实例也是用其外层类的实例构造,所以是一种链状关系,内部的类可以使用所有外层的类的实例,而外层的类不能使用内层的类, 应用a.this(最外层类实例) ,a.b.c.this(链中某个外层的实例)。
2.创建一个内部类 new aa().new bb().new()cc 实际上是调用外层类实例.new 本层构造函数()如果内部类是static的不需要外层类的实例多个static嵌套的内部类的实例 aa.bb.cc test = new aa.bb.cc();
3.继承自内部类要调用父类的外层类的super().
4.在类内部可以是使用外层类,但是如果生成一个实例的句柄就没有提供访问上层类的功能。
e.g.
class A {
int i = 2;
A (){
System.out.println("A");
i --;
}
class B {
int i = 1;
B() {
System.out.println("B");
i++;
}
}
}
class C {
public static void main(String [] args) {
A a = new A();
B b = a.new B();
System.out.println(a.i);
System.out.println(b.i);
}
}