??1. 接口的定義與實現??
??(1) 定義接口??
// 定義一個 "動物行為" 的接口
public interface Animal {void eat(); // 抽象方法(無實現)void sleep(); // 抽象方法(無實現)// Java 8+ 默認方法(有實現)default void breathe() {System.out.println("呼吸空氣");}// Java 8+ 靜態方法static boolean isAnimal(Object obj) {return obj instanceof Animal;}
}
??(2) 實現接口??
// Dog 類實現 Animal 接口
public class Dog implements Animal {@Overridepublic void eat() {System.out.println("狗吃狗糧");}@Overridepublic void sleep() {System.out.println("狗在窩里睡覺");}
}
??(3) 使用接口??
Animal myDog = new Dog();
myDog.eat(); // 輸出: 狗吃狗糧
myDog.breathe(); // 輸出: 呼吸空氣(調用默認方法)
Animal.isAnimal(myDog); // true(調用靜態方法)
123
文件結構?
src/
└── com/└── example/└── workflow/├── ExecutorCallback.java├── MyCallback.java├── WorkflowExecutor.java└── Main.java
1. ExecutorCallback.java??
package com.example.workflow;// 定義回調接口,無需額外導入
public interface ExecutorCallback {void onStart();void onStepDone(String step);void onComplete();void onError(String error);
}
??2. MyCallback.java??
package com.example.workflow;// 需要導入同一包內的接口
import com.example.workflow.ExecutorCallback;public class MyCallback implements ExecutorCallback {@Overridepublic void onStart() {System.out.println("工作流開始執行!");}@Overridepublic void onStepDone(String step) {System.out.println("步驟完成: " + step);}@Overridepublic void onComplete() {System.out.println("? 全部執行完畢!");}@Overridepublic void onError(String error) {System.out.println("? 錯誤: " + error);}
}
??3. WorkflowExecutor.java??
package com.example.workflow;// 導入同一包內的接口
import com.example.workflow.ExecutorCallback;public class WorkflowExecutor {private ExecutorCallback callback;public void setCallback(ExecutorCallback callback) {this.callback = callback;}public void execute() {try {callback.onStart();callback.onStepDone("步驟1");Thread.sleep(1000); // 屬于 java.lang,無需顯式導入callback.onStepDone("步驟2");Thread.sleep(1000);callback.onComplete();} catch (InterruptedException e) {callback.onError("執行超時");}}
}
??4. Main.java?
package com.example.workflow;// 導入同一包內的類
import com.example.workflow.WorkflowExecutor;
import com.example.workflow.MyCallback;public class Main {public static void main(String[] args) {WorkflowExecutor executor = new WorkflowExecutor();executor.setCallback(new MyCallback());executor.execute();}
}
因為callback就是實例化的ExecutorCallback類了
callback.onStart() 等于?ExecutorCallback.onStart()