接口:
一套協(xié)議,一套行為規(guī)范
使用interface表示定義一個接口
接口也可以繼承多個接口(多個接口之間用逗號隔開)
接口內(nèi)部元素:
?1.接口不能被實例化(沒有構造方法)
?2.定義變量(只能是靜態(tài)成員變量)(默認修飾符為public static final)
?3.抽象方法:不需自己實現(xiàn),誰用誰去實現(xiàn)(默認修飾符為public abstract)
???????使用implements實現(xiàn)接口 必須實現(xiàn)接口里定義的方法
?4.內(nèi)部接口
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
//需要和外部設備進行數(shù)據(jù)交互 必須實現(xiàn)數(shù)據(jù)交互的接口
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("從電腦接收數(shù)據(jù)");
}
public void printf() {
System.out.println("打印機開始打印數(shù)據(jù)");
}
}
接口實現(xiàn)數(shù)據(jù)回調(diào)
MyClass.java
public class MyClass {
public static void main(String[] args){
SplashView sv = new SplashView;
}
}
SplashView.java
//5.使用者必須實現(xiàn)這個接口
public class SplashView implements Http.OnHttpFinishListener {
public SplashView() {
//開始下載數(shù)據(jù)
Http http = new Http();
//7.必須傳遞當前對象給功能類
http.setListener(this);
//8.調(diào)用功能類 完成功能
http.getData(url: "www.baidu.com");
}
//6.必須實現(xiàn)接口內(nèi)部的所有抽象方法
public void onSuccess(String img) {
System.out.println("展示圖片"+ img);
}
public void onSuccess(String err) {
System.out.println("下載失敗"+ err);
}
}
Http.java
public class Http {
//2.定義一個變量接收誰來監(jiān)聽網(wǎng)絡下載完畢的事件
private OnHttpFinishListener listener;
public void getData(String url){
System.out.println("開始下載");
System.out.println("圖片下載完畢");
//3.任務結束 回調(diào)數(shù)據(jù)
listener.onSuccess(img: 圖片下載成功);
}
//4.提供set方法保存當前的監(jiān)聽者
public void setListener(OnHttpFinishListener listener) {
this.listener = listener;
}
//1.定義一個接口 統(tǒng)一返回數(shù)據(jù)的方式
public interface OnHttpFinishListener{
void onSuccess(String img);
void onFailure(String err);
}
}