java的匿名内部类知识点
时间: 2023-09-14 11:11:13 浏览: 55
匿名内部类是指在声明一个类的同时实例化它,而不需要为该类命名。在Java中,匿名内部类通常用于实现接口或继承抽象类。
下面是一些关于匿名内部类的知识点:
1. 声明匿名内部类:可以在创建对象的同时定义匿名内部类,使用new关键字后紧跟接口或抽象类的定义,并重写其中的方法。例如:
```java
InterfaceName obj = new InterfaceName() {
// 匿名内部类的实现
// 重写接口中的方法
};
```
2. 实现接口:匿名内部类常用于实现接口,可以直接在创建对象时实现接口的方法,省去了单独创建一个实现类的步骤。
```java
Runnable runnable = new Runnable() {
@Override
public void run() {
// 实现Runnable接口的run方法
}
};
```
3. 继承抽象类:匿名内部类也可以继承抽象类,并重写其中的抽象方法。
```java
AbstractClass obj = new AbstractClass() {
@Override
public void method() {
// 实现抽象类中的方法
}
};
```
4. 访问外部变量:匿名内部类可以访问外部类中的成员变量,但需要将其声明为final或实际上是final的(Java 8之后,如果变量未被后续代码修改,可以不显式声明为final)。
```java
int num = 10;
InterfaceName obj = new InterfaceName() {
@Override
public void method() {
System.out.println(num); // 访问外部变量
}
};
```
需要注意的是,匿名内部类没有名称,因此无法通过名称直接创建多个对象。每次使用都需要重新定义匿名内部类。匿名内部类通常用于简单的场景,如果需要复杂的逻辑或多次使用,建议单独定义一个具名的内部类。