更新时间:2022-07-19 来源:黑马程序员 浏览量:

匿名内部类是没有名称的内部类。在Java中调用某个方法时,如果该方法的参数是接口类型,除了可以传入一个接口实现类外,还可以使用实现接口的匿名内部类作为参数,在匿名内部类中直接完成方法的实现。
创建匿名内部类的基本语法格式如下:
new 父接口 (){
//匿名内部类实现部分
}下面通过一个案例学习匿名内部类的定义和使用,如文件4-23所示。
文件4-23 Example23.java
interface Animal {
void shout ();
}
public class Example23{
public static void main (String[] args) {
String name = "小花";
animalShout (new Animal () {
@Override
public void shout () {
System.out.println (name+"喵喵......");
}
});
}
public static void animalShout (Animal an) {
an.shout ();
}
} 文件4-23的运行结果如图4-23所示。

图4-23 文件4-23的运行结果
文件4-23中,第1~3行代码创建了Animal接口;第7~12行代码是调用animalShout()方法,将实现Animal接口的匿名内部类作为animalShout()方法的参数,并在匿名内部类中重写了Animal接口的shout()方法。
需要注意的是,在文件4-23中的匿名内部类中访问了局部变量name,而局部变量name并没有使用final修饰符修饰,程序也没有报错。这是JDK8的新增特性,允许在局部内部类、匿名内部类中访问非final修饰的局部变量,而在JDK8之前,局部变量前必须加final修饰符,否则程序编译时报错。
毕业16个工作日,平均薪资13180元,就业率100%,广州黑马AI智能应用开发(Java)学科20250529班
2026-03-06毕业32个工作日,平均薪资11147元,就业率95%,广州黑马AI智能应用开发(Java)学科20250326班
2026-03-05黑马程序员2025全国就业数据发布:全学科平均就业率92.07%,AI开发类就业平均薪资达11869.67元。
2026-03-05黑马全国校区齐开班!场面太太太壮观了!
2026-03-03AI智能应用开发课程紧贴企业刚需,全程高效学习,直达中高级软件开发水平
2026-02-28风口正劲!黑马程序员又一AI智能应用开发班毕业当天100%就业!
2026-02-27