参考:韩顺平 零基础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方法。
结果如下所示:

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

被折叠的 条评论
为什么被折叠?



