内部类的种类?
方法内部类
成员内部类
- 定义在另一个类(外部类)的内部,而且和成员方法和属性平级。属于类的一个成员,可以使用private、默认、protected、public来修饰。
外部类无法直接访问成员内部类的方法和属性,需要通过一个内部类的实例来访问。 - 调用方式:外部类名.内部类名 实例名 = 外部类名.new 内部类构造方法(参数);
- 静态内部类
- 被static修饰的成员内部类叫静态内部类。
- 外部类名.内部类名 实例名 = new 外部类名.内部类名(参数)。
- 局部内部类
- 定义在代码块或方法体内的类叫局部内部类。
- 局部内部类只能在代码块和方法体内使用(如创建对象和使用类对象等)。
- 匿名内部类
- 特殊的局部内部类。
- 必须继承一个类(抽象的、非抽象的都可以)或者实现一个接口。
- 如果父类(或者父接口)是抽象类,则匿名内部类必须实现其所有抽象方法。
- 只能使用一次,创建实例之后,类定义会立即消失。创建:父类(接口) 实例名 = new 父类(){//匿名内部类需要实现的功能。}
- 匿名内部类不能再是抽象类,因为匿名内部类在定义之后,会立即创建一个实例。
- 匿名内部类不能定义构造方法,匿名内部类没有类名,无法定义构造方法,但是,匿名内部类拥有与父类相同的所有构造方法。
- 可以定义代码块,用于实例的初始化。
只做了解。