接口的定义特点以及接口回调

目录 一、接口定义

       二、接口的特点

       三、使用接口的好处

      四、接口回调

     五、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) {
//我们自己写的实现方法
}
});
 

接口(系统框架)是系统提供的,接口的实现是我们自己实现的,这样可以达到接口统一,实现不同的效果。

系统在不同的状态“回调”我们的实现类,来达到接口和实现的分类。

猜你喜欢

转载自blog.csdn.net/qq_34772082/article/details/81234669