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 {
@Override
public void eat() {
System.out.println("狗吃狗粮");
}
@Override
public 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 {
@Override
public void onStart() {
System.out.println("工作流开始执行!");
}
@Override
public void onStepDone(String step) {
System.out.println("步骤完成: " + step);
}
@Override
public void onComplete() {
System.out.println("✅ 全部执行完毕!");
}
@Override
public 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()
857

被折叠的 条评论
为什么被折叠?



