匿名内部类与Lambda表达式习题

匿名内部类与Lambda表达式习题

1.写一个函数式接口
public Operation{
public int calc(int a,int b);
}
在测试类中写一个method方法,参数为Operation和a,b
public static void method(Operation op)
int result = op.calc(a,b);
System.out.println(result);
}
在测试类中写一个main方法,完成下面的需求
1)调用method方法,传递Lambda表达式,求整数3和4求的和
2)调用method方法,传递Lambda表达式,求整数3和4求的最大值
3)调用method方法,传递Lambda表达式,求整数3和4求的最小值

public class Demo2 {
    public static void main(String[] args) {
        int a = 10, b = 20;
        //Lambda表达式
        //调用method方法,传递Lambda表达式,求整数3和4求的和
        method((int a1, int b1) -> {
            return a + b;
        }, a, b);
        //调用method方法,传递Lambda表达式,求整数3和4求的最大值
        method((a1, b1) -> Math.max(a1, b1), a, b);
        //调用method方法,传递Lambda表达式,求整数3和4求的最小值
        method(Math::min, a, b);//直接使用Math类调用min静态方法
    }

    public static void method(Operation operation, int a, int b) {
        int result = operation.calc(a, b);
        System.out.println(result);
    }
}

@FunctionalInterface
interface Operation {
    int calc(int a, int b);
}

打印结果
------------------------------------------------------------------
30
20
10

2写一个Usb接口,要求有通电、加载驱动程序、运行三个方法
定义一个UseMouse鼠标类,实现Usb接口,复写三个方法
定义一个UsbKeyBoard键盘类,实现Usb接口,复写三个方法
写一个Computer电脑类,定义一个useUsb的方法,要求既能接收鼠标也能接收加键盘
把Usb作为方法的参数即可
写一个测试类,创建电脑对象,调用useUsb方法
【要求:使用三种方式实现】

public class Demo {
    public static void main(String[] args) {
      //创建电脑对象
        Computer com = new Computer();
        //创建鼠标对象
        //创建鼠标实现类直接调用接口
        UseMouse useMouse = new UseMouse();
        com.useUsb(useMouse);
        System.out.println("---------------");
        //使用电脑对象调用统一方法(因为其不是静态方法)
        //参数使用的是创建接口的实现对象,重写方法为匿名内部类
        com.useUsb(new Usb() {
            @Override
            public void power() {
                System.out.println("u盘通电");
            }

            @Override
            public void loadDriver() {
                System.out.println("u盘加载驱动");
            }

            @Override
            public void run() {
                System.out.println("u盘运行");
            }
        });
        System.out.println("---------------");
        //使用多态用接口引用接收 接口实现类对象
        //参数使用的是创建接口的实现对象,重写方法为匿名内部类
        Usb u =new Usb() {
            @Override
            public void power() {
                System.out.println("键盘通电");
            }

            @Override
            public void loadDriver() {
                System.out.println("键盘加载驱动");
            }

            @Override
            public void run() {
                System.out.println("键盘运行");
            }
        };
        //使用电脑类对象调用方法,将接口引用变量传入
        com.useUsb(u);
    }
}

//接口名,使用该接口则需重写
interface  Usb{
    void power();
    void loadDriver();
    void run();
}

//电脑类,统一使用接口的类中的方法(使用Usb规范)
class Computer{
    public void useUsb(Usb u){
        u.power();
        u.loadDriver();
        u.run();
    }
}

//鼠标接口实现类
public class UseMouse implements Usb {

    @Override
    public void power() {
        System.out.println("鼠标通电");
    }

    @Override
    public void loadDriver() {
        System.out.println("鼠标加载驱动");
    }

    @Override
    public void run() {
        System.out.println("鼠标运行");
    }
}

打印结果:
鼠标通电
鼠标加载驱动
鼠标运行
---------------
u盘通电
u盘加载驱动
u盘运行
---------------
键盘通电
键盘加载驱动
键盘运行
-----------------------------------------

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陪雨岁岁年年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值