主要看了https://blog.csdn.net/Wei_Smile/article/details/51040034此文后的一点点理解
public class Employee { /* * 定义回调接口的成员变量 */ private CallBack mCallBack; /* * 声明回调接口 */ public interface CallBack{ public abstract void work(); } /* * 设置回调接口对象成员变量 */ public void setCallBack(CallBack callBack) { this.mCallBack = callBack; } /* * 调用回调接口对象中的方法 */ public void doWork() { mCallback.work(); } }
这段代码里,mCallback是一个接口变量,用于接收覆盖了work方法的实现类,类似于一个hook。
如下:
public class Boss { private Employee employee; /* * 为Employee设置回调函数, 在这里定义具体的回调方法 */ employee.setCallback(new Employee.Callback() { @Override public void work() { System.out.println("work"); } }); }
这样可以overide接口类中的抽象方法work,此时就成功让自己overide的work方法被回调执行。
关键的就是设置回调接口:
this.mCallBack = callBack;
面向抽象编程的概念https://www.liaoxuefeng.com/wiki/1252599548343744/1260456371027744
向上转型https://www.liaoxuefeng.com/wiki/1252599548343744/1260454548196032
父类不需要关心子类对接口类的方法的具体实现,接口很适合做类似指针的作用。
进一步有接口与内部类搭配制作回调机制