Java接口回调(小白必读)
接口是 Java 中的一种数据类型。使用接口声明的变量被称作接口变量。
接口变量属于引用型变量,在接口变量中可以存储用于实现该接口的类的实例对象的引用,即存储对象的引用。
例如,假设 Animal 是一个接口,可以使用 Animal 声明一个变量:
假设 Dog 是实现 Animal 接口的类,使用 Dog 类创建名称为 object 的对象,那么 object 对象不仅可以调用 Dog 类中原有的方法,还可以调用 Dog 类实现接口中的方法。例如:
实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用这个方法。
【实例】接口回调的应用。
接口变量属于引用型变量,在接口变量中可以存储用于实现该接口的类的实例对象的引用,即存储对象的引用。
例如,假设 Animal 是一个接口,可以使用 Animal 声明一个变量:
Animal a;此时这个接口变量是一个空变量,还没有向这个接口中存入实现该接口的类的实例对象的引用。
假设 Dog 是实现 Animal 接口的类,使用 Dog 类创建名称为 object 的对象,那么 object 对象不仅可以调用 Dog 类中原有的方法,还可以调用 Dog 类实现接口中的方法。例如:
Dog object = new Dog();Java 中的接口回调是指把实现某一接口的类所创建的对象的引用赋值给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口中的方法。
实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用这个方法。
【实例】接口回调的应用。
/** * 定义 Shoutable接口 */ interface Shoutable { void shout(String s); } // Dog类实现接口 class Dog implements Shoutable { public void shout(String s) { System.out.println(s); } } // Cat类实现接口 class Cat implements Shoutable { public void shout(String s) { System.out.println(s); } } // 定义测试类 public class Test { public static void main(String[] args) { // 声明接口变量 Shoutable wangcai; // 在接口变量中存储对象的引用 wangcai = new Dog(); // 接口回调 wangcai.shout("旺财汪汪叫!"); // 在接口变量中存储对象的引用 wangcai = new Cat(); // 接口回调 wangcai.shout("旺财喵喵叫!"); } }运行结果为:
旺财汪汪叫!
旺财喵喵叫!