安卓回調機制的一點理解


主要看了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

 

 父類不需要關心子類對接口類的方法的具體實現,接口很適合做類似指針的作用。

進一步有接口與內部類搭配制作回調機制


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM