Java 匿名内部类
什么是匿名内部类?
匿名内部类是Java中一种特殊的内部类,它没有明确的类名。这种类在声明的同时就完成了实例化,因此只能使用一次。匿名内部类通常用于实现接口或扩展类,尤其是当这些实现或扩展仅在程序中使用一次时。
提示
匿名内部类的名称由编译器自动生成,通常是外部类名加上一个美元符号和数字,如OuterClass$1
。
匿名内部类的语法
匿名内部类的基本语法如下:
// 继承类的匿名内部类
new 父类名() {
// 类体部分,可以重写方法
};
// 实现接口的匿名内部类
new 接口名() {
// 接口实现部分
};
匿名内部类的基本用法
示例1:实现接口
下面是一个实现Runnable
接口的匿名内部类示例:
public class AnonymousInnerClassExample {
public static void main(String[] args) {
// 使用匿名内部类实现Runnable接口
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("这是通过匿名内部类实现的Runnable接口");
}
};
// 使用这个匿名内部类实例
Thread thread = new Thread(runnable);
thread.start();
}
}
输出:
这是通过匿名内部类实现的Runnable接口
示例2:继承抽象类
abstract class Animal {
abstract void makeSound();
}
public class AnonymousInnerClassDemo {
public static void main(String[] args) {
// 使用匿名内部类继承抽象类
Animal dog = new Animal() {
@Override
void makeSound() {
System.out.println("汪汪汪!");
}
};
dog.makeSound();
// 另一个匿名内部类实例
Animal cat = new Animal() {
@Override
void makeSound() {
System.out.println("喵喵喵!");
}
};
cat.makeSound();
}
}
输出:
汪汪汪!
喵喵喵!