对于安卓开发者来说,接口大家平时都有接触过,按钮的点击事件就是一个接口回调事件,那么大家知道如何自己定义一个接口,来提供给外部使用吗?提到接口,我们先来分析一下什么时候可以用到接口,先来谈第一种情况,打个比方,我们在家里装了一个监控,我们在监控做了一些设置,如果有小偷进来,监控就会向我们的手机发送报警讯息,这里,按钮对象就像我们的家,OnClickListener代表监控,setOnClickListener表示安监控这个动作,onClick方法是监控发现小偷进来了,我们可以在这里对监控做报警设置,转换成代码就是home.setMonitor(new Monitor( public void thiefCome( send message( ) )));
下面给大家演示一个完整的代码过程
1.接口方法用于回调 (这里定义接口是为了使用其接口方法):
//此处定义一个接口,该接口为抽象类,里面
//定义方法,但未实现具体逻辑
public interface ICallback {
public void func();
}
public class Caller {
//在一个类里定义一个接口
ICallback callback;
//当doCallback方法被调用时,接口方法被调用
public void doCallback() {
callback.func();
}
//通过外界传入一个接口对象
public void setCallback(ICallback callback) {
this.callback = callback;
}
}
public class MainClass {
public MainClass() {
}
public static void main(String[] args) {
Caller caller = new Caller();
caller.setCallback(new ICallback () {
public void func() {
System.out.println("dosth");
}
});
caller.doCallback();
}
}
以上演示的是第一种情况,还有一种情况就是向上转型,这一点和定义父类继承很像,但是我们知道,子类只能继承一个父类,不能实现多继承,但是接口是可以多实现的,这个不难,大家看我给的例子就能明白第二种用法
2.接口用于向上转型
interface People{
void peopleList();
}
class Student implements People{
public void peopleList(){
System.out.println("I’m a student.");
}
}
class Teacher implements People{
public void peopleList(){
System.out.println("I’m a teacher.");
}
}
public class Example{
public static void main(String args[]){
People a; //声明接口变量
a=new Student(); //实例化,接口变量中存放对象的引用
a.peopleList(); //接口回调
a=new Teacher(); //实例化,接口变量中存放对象的引用
a.peopleList(); //接口回调
}
}
运行结果:
I’m a student.
I’m a teacher.