public class Test { public static void main(String[] args) { //创建外部类 Outer outer = new Outer(); //通过外部类创建内部类 Outer.Inner inner1 = outer.new Inner(); //直接创建类 Outer.Inner inner2 = new Outer().new Inner(); inner2.print(); //静态内部类,可反射操作该类 Outer1.Inner inner3 = new Outer1.Inner(); inner3.print(); //匿名内部类,反射可以判断这个类是不是匿名类,但不能操作匿名类 new Outer2(){ //匿名类的实现类,不是实例化 @Override void run(){ System.out.println("实现匿名内部类中的方法。"); } }.run(); new IFunction(){ @Override public void test(){ System.out.println("xx"); } }; //局部内部类 Outer3 outer3 = new Outer3(); outer3.test(); //局部类的继承 new Child(); } } //1.一般内部类 //闭包:提高变量生命周期 class Outer{ //通过内部类的对象的实例调用内部类中的私有方法 private void outerPrint(){ new Inner().print(); } int i =20; class Inner{ int i = 100; public Inner(){ System.out.println("内部类实例化"); } public void print(){ //调用外部类的私有方法 //outerPrint(); System.out.println("内部类"+this.i); System.out.println("外部类"+Outer.this.i); } } } //2.嵌套内部类 -> 静态内部类 class Outer1{ static class Inner{ public Inner(){ System.out.println("outer1 Inner实例化"); } int i =0; void print(){ System.out.println("静态内部类中的方法"); } } } //3.匿名内部类 abstract class Outer2{ abstract void run(); public void outer22(){ System.out.println("Outer2匿名类中的方法。"); } } interface IFunction{ void test(); } //4.局部内部类 class Outer3{ void test(){ class Inner{ void print(){ System.out.println("Outer3局部内部类的方法。"); } } new Inner().print(); } } //静态内部类才能被外部类继承 class Child extends Outer1.Inner{} //class Child1 extends Outer.Inner{}//错误