首先内部类是一个编译时概念,跟虚拟机无关,编译成功后就会形成两个class对象。如:外部类outer中的内部类inner,编译完成后出现outer.class和outer$inner.class
成员内部类写在外部类的方法之间,有两个主要特点:
1.外部类作用范围内可以任意创建内部类对象,即使是私有的
2.内部类可以范文外部类的所有域,即使是私有域
需要注意的是,成员内部类不能含有static的变量和方法。因为需要先创建了外部类,才能创建成员内部类
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
还有就是成员内部类要引用外部类对象时,使用Outer.this来表示外部类对象