java 匿名内部类 和 Lambda 表达式


同步文章(更好的排版):
java 匿名内部类 和 Lambda 表达式

一、匿名内部类

1.1说明

在一个接口或抽象类定义完成后。若想使用此接口或此抽象类,一般需要定义专门的子类,随后利用子类对象的向上转型才可以使用此接口或抽象类。但是很多时候某些子类可能只使用一次,之后就可能不再使用了。那么单独为这个子类创建一个类文件就会非常浪费,此时就可以利用匿名内部类来解决此类问题

1.2 匿名内部类的作用

用于直接对某个接口或抽象类的使用,减少专门子类的定义

1.3 特点

  1. 相当于没有名字的局部内部类,匿名内部类定义在方法中。没有专门的 class 类名来定义
  2. 匿名内部类由于没有具体的名称,想再使用就要重新定义
  3. 匿名内部类中不能手动添加构造方法,不能包含静态成员
  4. 匿名内部类中一般不包含特有方法,只重写接口或抽象类中的方法。特有方法:指只有这个类中存在,其他类中不存在

1.4 接口的正常使用情况(抽象类同理)

  1. 定义接口

  1. 定义实现接口的类

  1. 利用子类对象的向上转型使用此接口

但有时候这个 Mouse 子类只使用一次,之后可能就不使用了。这样专门定义一个子类就会造成浪费。为了解决这个问题。匿名内部类就产生了

1.5 通过局部内部类使用接口(抽象类同理)

public class Test02 {
   
   
    //main 方法也是方法
    public static void main(String[] args) {
   
   
        //通过内部类实现接口
        //第一步:创建实现接口的内部类
        class Upan implements USB{
   
   
            @Override
            public void service() {
   
   
                System.out.println("U盘连接成功..........");
            }
        }
        //第二步:实例化内部类
        Upan upan = new Upan();
        //第三步:使用内部类的方法
        upan.service();
    }
}

1.6 通过匿名内部类使用接口(抽象类同理)

接口名或抽象类名 对象名 = new 接口名或抽象类名
{
   
      //这对括号里的就是匿名内部类
    //重写接口或抽象类中的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值