安卓回调机制的一点理解

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

 父类不需要关心子类对接口类的方法的具体实现,接口很适合做类似指针的作用。

进一步有接口与内部类搭配制作回调机制

原文地址:https://www.cnblogs.com/avriiil/p/11810920.html