Java中的内部类一共分为四种:
- 静态内部类 static inner class
- 成员内部类 member inner class
- 局部内部类 local inner class
- 匿名内部类 anonymous inner class
一、静态内部类
是最简单的内部类,定义时需要加上static关键字,不能和外部类有相同的名字。
只能访问外部类的静态成员和静态方法,包括了私有的静态成员和方法。
使用方法为:
OuterClass.InnerClass inner = new OuterClass.InnerClass();
二、成员内部类
定义时不用static修饰,它可以访问它的外部类的所有成员变量的方法,不管是静态的还是非静态的都可以。
使用方法:
①在外部类里面创建成员内部类的实例:
this.new.InnerClass();
②在外部类之外创建内部类的实例:
(new OuterClass()).new InnerClass();
③在内部类里访问外部类的成员:
OuterClass.this.member
三、局部内部类
定义在方法中,比方法的范围还小,基本上很少用到。不能被public、protected、private和static修饰。只能访问方法中定义的final类型的局部变量。
只能在方法中生成局部内部类的实例并且调用其方法。
四、匿名内部类
是一种没有名字的局部内部类,不使用关键字class、extebds、implements,没有构造方法。
匿名内部类隐式地继承了一个父类或者实现了一个接口。