【java】一文带你了解匿名内部类

📅 2026/7/13 13:44:11 👁️ 阅读次数 📝 编程学习
【java】一文带你了解匿名内部类

匿名内部类

文章目录

  • 匿名内部类
    • 接口中的使用:
    • 抽象类中的使用:

匿名内部类:没有名字的局部内部类,一次性创建并使用某个类的子类 / 接口实现类对象,简化代码书写。
核心特点
  1. 没有类名:直接定义、直接创建对象,不需要单独写 class
  2. 一次性使用:只能创建一个对象,用完即废
  3. 简化代码:替代简单的子类 / 实现类,不用单独定义类

接口中的使用:

//接口publicinterfaceSwim{//抽象方法publicabstractvoidgoswim();}//单独写一个实现类去实现接口classstudentimplementsSwim(){@Overridepublicvoidgoswim(){//实现代码}}//用匿名内部类实现接口publicclassExample{publicstaticvoidmain(String[]args){//new了一个没有名字的对象去实现Swim接口,去实现里面的goswim方法swim(newSwim(){@Overridepublicvoidgoswim(){//实现代码}});}}//简化为lambda表达式publicclassExample{publicstaticvoidmain(String[]args){//// 直接用 Lambda 简化:省略接口名、new、方法名、@Overrideswim(()->{/*实现代码*/});}}

抽象类中的使用:

publicabstractclassAnimal{publicabstractvoideat();}//如果有一个方法的形参是抽象类,可以传他的匿名内部类来实现publicstaticvoidanimaleat(Animalan){an.eat();}//实现animaleat(newAnimal(){@Overridepublicvoideat(){//实现代码}})//lambda表达式//如果没有形参就直接用括号,有一个形参用这个形参指向方法体animaleat(()->{/*实现代码*/})