内容
1.接口基础知识
2.接口知识应用之利用接口实现数据回调
一.接口基础知识
详细请看:https://www.jianshu.com/p/3d0c0a302696
注意点强调
①接口可以多继承
②接口不能被实例化(没有构造方法),但是可以作为成员变量被声明。
③接口里面只能定义静态成员变量(因为不能被实例化),都是被public static final默认修饰(可以替代枚举)
④接口里面只能定义 抽象方法(因为都是给别人用的,不需要自己实现, 谁用谁实现)。默认是 public abstract修饰
⑤接口里面还可以定义接口,访问的时候就类似变量, . 出来
二.接口知识应用之利用接口实现数据回调
接口实现数据回调也是一种代理设计模式
1.使用实例
public class 测试程序 {
public static void main(String[] args) throws Exception {
SplashView sv = new SplashView();
}
}
public class SplashView implements Http.OnHttpFinishListener{
//构造方法
public SplashView() {
//开始下载数据
Http http = new Http();
//6.必须传递当前对象给功能类
http.setListener(this);//用到了多态
//7.调用功能类,完成功能
http.getData("www.baidu.com");
}
//5.必须实现接口内部的所有抽象方法
public void onSuccess(String img) {
System.out.println("展示图片:"+img);
}
public void onFailure(String err) {
System.out.println("下载失败:"+err);
}
}
public class Http {
//2.定义一个变量接收谁来监听网络下载完毕的事件
private OnHttpFinishListener listener;
public void getData(String url) {
System.out.println("开始下载。。。");
System.out.println("图片下载完毕");
//3.任务结束,回调数据
listener.onSuccess("敌敌畏的照片下载成功");//用到了多态
}
//4.提供给set方法保存当前的监听者
public void setListener(OnHttpFinishListener listener) {
this.listener = listener;
}
//1.定义一个接口,统一返回数据的方式
public interface OnHttpFinishListener{
void onSuccess(String img);
void onFailure(String err);
}
}
输出结果
开始下载。。。
图片下载完毕
展示图片:敌敌畏的照片下载成功
上述程序的图片表示
2.疑问
先看下图
当时我有这样的疑问:为何这里接口能创建对象?
这里接口其实没有创建对象,因为new才是创建对象,这里是接口作为成员变量类型。接口不能直接实例化,但是可以声明。接口可以作为成员变量,只是创建对象的时候需要使用多态
总结
今天学到了很多,复习了接口的知识,虽然之前学过,但是基本没用过,但是今天,通过数据回调那个程序,对接口理解更深刻了:接口使代码和代码之间耦合度降低。能否熟练运用接口也是衡量程序员是否优秀的重要标准!通过那个程序,也复习了多态,对多态的理解也更深了!总之今天还不错!