目录 一、接口定义
二、接口的特点
三、使用接口的好处
四、接口回调
五、Android中的接口回调机制
一、接口定义
接口通常以interface来修饰。
public interface Animal{
void eat(String param);
}
接口名:Animal 接口中定义的方法eat(String param)
二、接口的特点:
1:接口没有构造方法,不可实例化,可结合多态进行使用(接口 对象=new 对象() )
2:接口中的每个变量隐式指定为 public static final。
3:接口中的每个方法都是隐式抽象的,默认指定为 public abstract
4:接口里不能包含普通方法
5:子类继承接口必须实现接口里的所有成员方法,除非子类也是抽象类
6:接口支持多继承。
7:当一个类实现接口的时候,要实现接口中所有定义方法。否则这个类要被定义为抽象类。
(抽象类的特点:
1:成员属性必须不能是 private(私有) 修饰符修饰
2:成员方法可包含普通方法(虚方法)和abstract(抽象)修饰的成员方法
3:子类可选择性的重写虚方法,必须实现父类的所有抽象方法)
三、使用接口的好处:
例如:某公司需要做一款统计老人日常生活的APP。要求必须统计老人每天的吃的食物,步行距离,睡眠时间。该APP要求有Android版和iOS版。架构师定义了MethodAll接口。
public interface MethodAll{
void eat(String food);
void walk(double distance);
void sleep(int time);
}
1.使代码规范性
Android 程序员和iOS程序员都继承该接口,二者开发出来的App就都具备吃的食物,步行距离,睡眠时间这三个必要功能。(倘若不定义接口,二者各干各的,最终的结果不一定满足领导要求必须统计吃的食物,步行距离,睡眠时间的需求,有可能二者中有人马虎,少实现了一种功能)
2.扩展性
现在领导突然觉得Android用户群体比较大,想统计一下Android用户老人每天的睡眠时间。iOS的用户群体少就保持原样。这个时候只需要Android程序员修改他的sleep实现方法即可,无需改动接口。
接口的使用既可以保证大部分用户的共同需求,又可以满足大部分用户中的部分用户的特定需求
四、接口回调
接口回调的意思即,注册之后并不立马执行,而在某个时机触发执行。比如常见的OnclickListener事件,点击的时候才执行对应的响应
先定义三个要素A(客户端),B(服务端),约定(接口)
A有一个问题不会,他去问B。B说我现在没想出来,等我想到答案了再告诉你。然后A该干嘛干嘛,坐等B告诉他答案。在接收到B答案的那一刻,A再解决那个刚才他不会的问题。
常见的OnclickListener事件中,button就是那个A,用户是B.只有用户B点击了按钮,才会告诉A我点击你了。然后执行A的回调方法。
第一步。定义一个接口(也就是常说的回调接口)
public interface CallBack{
void getResult(String str);
}
第二步。B类中需要编写的(也即很多博客中所谓的接口帮助类)
public class B{
// 直接把CallBack 当参数传入,
// 在需要使用的时候直接传入,然后调用接口方法就可以了。
// 避免了,忘记在调用的类中setCallBack(set值)
//doCallBackMethod可以任务是一个网络请求或其他耗时操作。也就是B在想答案所花费的时间
public static void doCallBackMethod(CallBack callBack){
try {
//睡三秒,模拟B思考答案
Thread.sleep(3*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
String result= "这就是B想到的答案";
callBack.getResult(result);
}
第三步 。具体调用类,及通过接口传递数据,会掉到那个地方
public class A extends Activity implements CallBack{
B.doCallBackMethod(A.this);
public void getResult(String string ){
Log.e("tag","拿到了B想到的答案"+string);
}
}
五、Android中的接口回调机制
以常见的OnclickListener事件为例
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//我们自己写的实现方法
}
});
接口(系统框架)是系统提供的,接口的实现是我们自己实现的,这样可以达到接口统一,实现不同的效果。
系统在不同的状态“回调”我们的实现类,来达到接口和实现的分类。