主要看了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
父類不需要關心子類對接口類的方法的具體實現,接口很適合做類似指針的作用。
進一步有接口與內部類搭配制作回調機制