Java笔记--内部类
一、内部类
以后在实际开发中很少自己去写。
概念:内部类就是在类中继续编写一个类。
1、成员内部类

内部类创建对象的格式:

内部类中,访问外部类的成员:可以直接访问。
外部类中,访问内部类的成员:需要创建对象。

2、静态内部类
内部类也可以被static修饰,它也算是外部类的一个成员。

3、局部内部类
太鸡肋了,不用。
4、匿名内部类
是一个特殊的局部内部类(定义在方法内部),前提:需要存在一个接口或者类。
下面我们将通过一个例子来感受匿名内部类的作用:
我们先准备一个接口Inter,在里面编写一个抽象方法show( );

然后在主方法平级的位置编写了一个use方法,方法的参数就是刚刚的Inter类型,然后在里面去调用show方法。

然后我们想调用这个useInter方法,如果我们直接调用会报错,错误的原因是没有传递参数

方法的形参是一个接口类型Inter,我们应该传入什么参数?
接口不能实例化,所以不能new一个Inter类型的对象。
所以只能传递这个接口的实现类对象了。
当方法的形参是一个实现类对象,我们只能传入接口的实现类对象。
这里我们新建一个Inter的实现类,重写方法。

我们就可以创建实现类对象,传入方法里面去。以多态的形式(父类引用指向子类对象)

如果使用匿名内部类如何完成方法的调用?

下面就是用匿名内部类完成方法的调用。

匿名内部类并不能完全替代实现类,如果接口里面抽象方法多就手写实现类,如果少就用匿名内部类。