匿名内部类

本文介绍了匿名内部类的概念,如何在Java中通过它避免创建临时类来实现一次性的接口或抽象方法,并探讨了其在回调和静态方法中的应用实例。
摘要由CSDN通过智能技术生成

匿名内部类

  • 就是一种特殊的局部内部类,所谓匿名指的是程序员不需要为这个类命名。
  • new 类名或接口(参数值){
    类体(一般是方法重载);
    };

为什么使用匿名内部类

  • 在实际开发过程中,我们常常遇到这样的情况:一个接口或类的方法的实现方式在程序中只会执行一次,但为了使用它,我们需要创建它的实现类。此时可以使用匿名内部类的方式,可以无需创建新的类,减少代码。

传统方法(不使用匿名内部类)

  • 生成抽象类,里面有一个抽象方法。
abstract class Animal {
    public abstract  void run();
}
  • 为实现抽象方法,需生成一个实现类,同时重载抽象类的功能函数。
class  Cat extends Animal {
    @Override
    public void run() {
        System.out.println("快速的跑");
    }
}

使用匿名内部类

   Animal a=new Animal(){
            @Override
            public void run() {
                System.out.println("快速的跑");
            }
        };
        a.run();
  • 运行结果如图:
    Alt

匿名内部类的使用技巧

不使用匿名内部类的情况

public class Test4 {
    public static void main(String[] args) {
        singing s=new singing() {
            @Override
            public void sing() {
                System.out.println("开始哼起了歌曲");
            }
        };
        doing(s);

    }
  //  定义静态方法实现对象的回调
    public  static  void  doing (singing a){
        System.out.println("-------------------------");
        a.sing();
    }
}
//定义接口
interface  singing{
    void  sing();
}

使用匿名内部类的情况

public class Test4 {
    public static void main(String[] args) {

        doing(new singing() {
            @Override
            public void sing() {
                System.out.println("开始哼起了歌");
            }
        });

    }
    public  static  void  doing (singing a){
        System.out.println("-------------------------");
        a.sing();
    }
}
interface  singing{
    void  sing();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值