Interface的種類

2023/09/22閱讀時間約 2 分鐘

普通的interface:有一個以上的abstract method

interface Drawable {     
void draw();
}

class Circle implements Drawable {
public void draw() {
System.out.println("Drawing a circle");
}
}

public class Main {
public static void main(String[] args) {
Drawable shape = new Circle();
shape.draw();
}
}


Functional Interface:只能有一個 abstract method

配合著java 8 出來的lambda expression

lambda expression 只能用於標有 @FunctionalInterface 的interface

例如java.util.function包中的 Predicate、Function、Consumer等函數式接口
@FunctionalInterface
interface Calculator {
int calculate(int a, int b);
}

public class Main {
public static void main(String[] args) {
// 使用 Lambda 表達式實現函數式接口
Calculator calc = (a, b) -> a + b;

System.out.println(calc .calculate(5, 3));
}
}


Mark Interface:一個完全空的 interface

通常用於向compiler或runtime environment提供一些額外的資訊

例如Serializable接口
Serializable就像是個Tag(標籤),只是告訴Java這個類別class是可以被序列化
import java.io.Serializable;

class Student implements Serializable {
private int studentId;
...
}

訴說著Student類可以被序列化與反序列化


我的Java學習日記
留言0
查看全部
發表第一個留言支持創作者!