Java匿名内部类实战

参考:韩顺平 零基础30天学会Java

摘要:本文是为了复习需要。主要的是为了复习匿名内部类的实战。前提知识:匿名内部类,接口的多态。没有掌握的同学,需要自行补习基础知识。或者翻看我的主页观看后续会不会,上传文章。

匿名内部常用于传递参数,更加的方面高效。

首先写一个学生类

interface Bell { 
    void ring();
}

class Student {//类

    public void Clock(Bell bell) {
        System.out.println(bell.getClass());
        bell.ring();//动态绑定
    }
}

这里定义了一个闹钟接口,闹钟的结口里面有个ring方法的声明。

再定义一个学生类,里面有个Clock方法。Clock的形参列表是Bell。这里用到的是多态。后续传递不同Bell继承的接口,或者其实现类。就可以实现多态。我的理解是这样。相当于如下图所示:

 并且在Clock中通过一个接口调用自己的接口的方法声明。这样说还是一头雾水。我们通过实现一个案例来理解。

public class Exercise {

    public static void main(String[] args) {
        Student student = new Student();
        System.out.println("起床了,开始读书了");


        student.Clock(new Bell() {
            @Override
            public void ring() {
                System.out.println("起床了,开始读书了");
            }
        });
        student.Clock(new Bell() {
            @Override
            public void ring() {
                System.out.println("小伙伴上课了");
            }
        });
    }
}

 

这里我的bell实参他是一个匿名类,没有名字,系统会自动分配一个名字给他,他实现了接口中的ring方法,因此接下来能调用ring方法。

结果如下所示:

因此传递的不仅仅是一个匿名类 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值