匿名内部类:可以理解为是一种特殊的局部内部类,也是定义在方法中的。
创建匿名内部类的前提是需要一个接口或类。
格式:new 类名或接口名() {
重写方法;
}
使用场景:当方法的形式参数是接口或者抽象类时,可以将匿名内部类作为实际参数传递。
public class AnonymousInnerTest { public static void main(String[] args) { // 使用接口方法的一般步骤 1、创建实现类,通过implements关键字去实现接口 2、重写方法 3、创建实现类对象 4、通过实现类对象调用重写后的方法 InnerImpl impl = new InnerImpl(); impl.show(); // 匿名内部类是将实现接口或继承类,重写方法,创建实现类或继承类对象调用重写后的方法,这三个步骤放在了一起 new Inner() { @Override public void show() { System.out.println("重写后的show方法。。。"); } @Override public void show2() { } }.show(); // 如果接口存在多个方法的话,我们需要调用多个方法时,使用接口或类接收,此时相当于父类的引用指向子类的对象(多态),然后再去调用重写方法即可。 Inner i = new Inner() { @Override public void show() { System.out.println("重写后的show方法。。。"); } @Override public void show2() { System.out.println("重写后的show2方法。。。"); } }; i.show(); i.show2(); } } interface Inner { void show(); void show2(); } class InnerImpl implements Inner { @Override public void show() { System.out.println("show方法。。。"); } @Override public void show2() { System.out.println("show2方法。。。"); } }
匿名内部类作为参数传递使用:
public class SwimmingTest { public static void main(String[] args) { goSwimming(new Swimming() { @Override public void swim() { System.out.println("游泳了。。。"); } }); } //使用接口方法 public static void goSwimming(Swimming swimming) { swimming.swim(); } //游泳接口 interface Swimming { public void swim(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix