接口:
一套协议,一套行为规范
使用interface表示定义一个接口
接口也可以继承多个接口(多个接口之间用逗号隔开)
接口内部元素:
1.接口不能被实例化(没有构造方法)
2.定义变量(只能是静态成员变量)(默认修饰符为public static final)
3.抽象方法:不需自己实现,谁用谁去实现(默认修饰符为public abstract)
使用implements实现接口 必须实现接口里定义的方法
4.内部接口
Datainteraction.java
//用这方法代替枚举
interface Season {
int SPRING = 1;
int SUMMER = 2;
int AUTOM = 3;
int WINTER = 4;
}
interface t2 {
}
public interface DataInteraction {
interface Input(){
void input();
}
interface Output(){
void output();
}
}
Macbook.java
//需要和外部设备进行数据交互 必须实现数据交互的接口
public class Macbook implements DataInteraction.Output, DataInteraction.Input {
public void input() {
System.out.println("安全输入");
}
public void output() {
System.out.println("急速输出");
}
}
Printer.java
public class Printer implements DataInteraction.Input{
public void input() {
System.out.println("从电脑接收数据");
}
public void printf() {
System.out.println("打印机开始打印数据");
}
}
接口实现数据回调
MyClass.java
public class MyClass {
public static void main(String[] args){
SplashView sv = new SplashView;
}
}
SplashView.java
//5.使用者必须实现这个接口
public class SplashView implements Http.OnHttpFinishListener {
public SplashView() {
//开始下载数据
Http http = new Http();
//7.必须传递当前对象给功能类
http.setListener(this);
//8.调用功能类 完成功能
http.getData(url: "www.baidu.com");
}
//6.必须实现接口内部的所有抽象方法
public void onSuccess(String img) {
System.out.println("展示图片"+ img);
}
public void onSuccess(String err) {
System.out.println("下载失败"+ err);
}
}
Http.java
public class Http {
//2.定义一个变量接收谁来监听网络下载完毕的事件
private OnHttpFinishListener listener;
public void getData(String url){
System.out.println("开始下载");
System.out.println("图片下载完毕");
//3.任务结束 回调数据
listener.onSuccess(img: 图片下载成功);
}
//4.提供set方法保存当前的监听者
public void setListener(OnHttpFinishListener listener) {
this.listener = listener;
}
//1.定义一个接口 统一返回数据的方式
public interface OnHttpFinishListener{
void onSuccess(String img);
void onFailure(String err);
}
}