更新时间: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修饰符,否则程序编译时报错。
【AI设计】北京143期毕业仅36天,全员拿下高薪offer!黑马AI设计连续6期100%高薪就业
2025-09-19【跨境电商运营】深圳跨境电商运营毕业22个工作日,就业率91%+,最高薪资达13500元
2025-09-19【AI运维】郑州运维1期就业班,毕业14个工作日,班级93%同学已拿到Offer, 一线均薪资 1W+
2025-09-19【AI鸿蒙开发】上海校区AI鸿蒙开发4期5期,距离毕业21天,就业率91%,平均薪资14046元
2025-09-19【AI大模型开发-Python】毕业33个工作日,就业率已达到94.55%,班均薪资20763元
2025-09-19【AI智能应用开发-Java】毕业5个工作日就业率98.18%,最高薪资 17.5k*13薪,全班平均薪资9244元
2025-09-19