内部类
概述
内部类就是在一个类中定义一个类。
内部类的访问特点
- 内部类可以直接访问外部类的成员,包括私有
- 外部类要访问内部类的成员,必须创建对象
分类
按照内部类 在类中定义的位置不同,可以分为如下两种形式:
- 在类的成员位置:成员内部类
- 在类的局部位置:局部内部类
成员内部类
成员内部类的定义位置:在类中跟成员方法,变量是一个位置。
将一个类,设计为内部类的目的,大多数都是不想让外界去访问,所以内部类的定义应该私有化,私有化之后,再提供一个可以让外界调用的方法,方法内部创建内部类对象并调用。
使用成员内部类,就是为了将成员内部类中的内容隐藏起来,并不想让外界直接看到(不能直接访问)。所以内部类的修饰符,一般用private,而不是public。
局部内部类
局部内部类是在方法中定义的类,外界无法直接使用,需要在方法内部创建对象并使用。
该类可以直接访问外部类的成员,也可以访问方法内的局部变量。
匿名内部类
当需要一个类来继承某个已经存在的类(或者实现某个已经存在的接口),且这个类的使用范围局限,不需要新开一个文件来记录这个类的时候,可以使用匿名内部类。
前提:存在一个类或者接口,这里的类可以是具体类也可以是抽象类。
本质:是一个继承了该类或者实现了该接口的子类匿名对象
重写方法:继承类或实现接口。
new xxx:说明是一个对象,但是对象没有名字。
匿名内部类,本质是一个对象,继承类或实现接口。
匿名内部类在开发中的使用
当发现某个方法需要接口或抽象类的子类对象,可以传递一个匿名内部类过去,来简化传统的代码。