- 成员内部类
成员内部类:可以访问外部类的所有成员属性和方法(包括 private / static)
成员内部类:编译器会默认为成员内部类添加了一个指向外部类对象的引用
成员内部类:当内部类与外部类的字段或方法同名时,默认访问内部类的成员,如果要访问外部类成员,则需要显示指定:
外部类.this.成员变量
外部类.this.成员方法
- 局部内部类
局部内部类:像是方法里面的一个局部变量一样
局部内部类:不能有 public、protected、private、static 修饰符
- 匿名内部类
匿名内部类:在编译的时候由系统自动起名为 Outter$1.class。
举例:
public void somethingHappen() {
Runnable runnable = new Runnable(){
@Override
public void run(){
++year;
}
};
runnable.run();
}
- 静态嵌套类
静态内部类:不依赖于外部类,没有指向外部类对象的引用
静态内部类:只能使用外部类的static成员变量或者方法
- 创建内部类
创建静态内部类对象: 外部类类名.内部类类名 xxx = new 外部类类名.内部类类名()
创建成员内部类对象: 外部类类名.内部类类名 xxx = new 外部类类名().new 内部类类名()
- 内部类的原因 ( 好处 )
每个内部类都能独立地实现一个接口,不管外部类是否实现类某个接,对于内部类没有影响
参考文章:
Java 内部类详解