一、什么是内部类
在一个类的里面,再定义一个类。(在一个类的内部定义的类,称为内部类)
举例:在A类的内部定义B类,B类就被称为内部类
二、内部类的访问特点
1.内部类可以直接访问外部类的成员,包括私有
2.外部类要访问内部类的成员,必须创建对象
三、内部类的分类
内部类的分类:
- 成员内部类
- 局部内部类
- 静态内部类
- 匿名内部类
四、成员内部类
4.1 什么是成员内部类
写在成员位置的,属于外部类的成员。(类中,方法外)
4.2 获取成员内部类对象
五、静态内部类
六、局部内部类
七、匿名内部类(最重要)
🎁什么是匿名内部类
匿名内部类是 Java 编程语言中一种特殊的类,它没有显式地定义类名,而是在创建对象时通过传递实现了某个接口或继承了某个类的代码块来定义类。通常,我们使用它来简化代码、减少类的数量和更高效地编写事件处理程序等。
🎁为什么要使用匿名内部类
在实际开发中,我们常常遇到这样的情况:一个接口/类的方法的某个实现方式在程序中只会执行一次,但为了使用它,我们需要创建它的实现类/子类去实现/重写。此时可以使用匿名内部类的方式,可以无需创建新的类,减少代码。
🎁详细解释
🏳️🌈不使用匿名内部类
比如下面的代码,定义了一个接口,接口里面有一个show方法
public interface Interface01 {
void show();
}
为了使用该接口的show方法,我们需要去创建一个实现类,同时书写show方法的具体实现方式
public class Interface01Impl implements Interface01{
@Override
public void show() {
System.out.println("奋斗5天,期末考试我要过Java");
}
}
在上面的代码中,实现类Interface01全程只使用一次,为了这一次的使用要去创建一个类,未免太过麻烦。那么我们可以使用匿名内部类。
🏳️🌈使用匿名内部类
public static void main(String[] args) {
Interface01 interface01 = new Interface01() {
@Override
public void show() {
System.out.println("奋斗5天,期末考试我要过Java");
}
};
//调用接口方法
interface01.show();
}
🎁书写匿名内部类的格式
new 接口/类名(参数1, 参数2...){
实现方法1(){
}
实现方法2(){
}
......
};