内部类
在某一个类的内部定义的类叫做内部类。包含内部类的类称为外部类。
- 在内部类中可以访问外部类的所有的属性和方法
- 在外部类中,若想访问内部类的属性和方法,必须通过内部类对象来访问
- 若想在创建别的类中的内部类对象,需要使用外部类对象.new 内部类的构造方法()的形式。
Outer.Inner inner = new Outer().new Inner();- 内部类中不能定义static变量
- 内部类的权限修饰符,可以是private、default、protected、public,而普通类只能是default和public
静态内部类
在类的内部定义的static类属于静态内部类
- 静态内部类只能访问外部类的静态成员
- 静态内部类可以包含static成员
- 若想创建别的类中的静态内部类对象,需要使用 new 外部类名.内部类的构造方法()
Outer.Inner inner = new Outer.Inner();
匿名内部类
没有名字的内部类属于匿名内部类
- 匿名内部类不能定义任何静态成员、方法
- 匿名内部类的方法不能是抽象的
- 匿名内部类必须实现接口或抽象父类的所有抽象方法
- 匿名内部类不能定义构造器
- 匿名内部类访问的外部类成员变量或方法必须用static修饰
- 匿名内部类介意访问外部类私有变量和方法