Interface的種類

更新 發佈閱讀 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類可以被序列化與反序列化


留言
avatar-img
留言分享你的想法!
avatar-img
Genos's Coding Diary的沙龍
6會員
19內容數
我的Java學習日記
2023/10/03
為何要重寫equals方法? 為何要重寫hashCode方法?
2023/10/03
為何要重寫equals方法? 為何要重寫hashCode方法?
2023/09/27
兩種方式進行物件比較,使用Comparator或使用Comparable
2023/09/27
兩種方式進行物件比較,使用Comparator或使用Comparable
2023/09/27
併發,多個事情在同一時間段內同時發生 並行,多個事情在同一個時間點上同時發生
2023/09/27
併發,多個事情在同一時間段內同時發生 並行,多個事情在同一個時間點上同時發生
看更多
你可能也想看
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
2.0 上古漢語的特殊結構 2.3 之乎者也 —  也 (矣﹑焉) 2.3.1 也 一﹕初探之四 現在讓我們從函數引申出來的函子/論元觀點來解析上述「也」字的用法。用初級計算機科學編程的語言來說,函子就是一個具有函數功能的物件 (object),方便我們使用﹔它的功能就是讓我們可以召喚
Thumbnail
2.0 上古漢語的特殊結構 2.3 之乎者也 —  也 (矣﹑焉) 2.3.1 也 一﹕初探之四 現在讓我們從函數引申出來的函子/論元觀點來解析上述「也」字的用法。用初級計算機科學編程的語言來說,函子就是一個具有函數功能的物件 (object),方便我們使用﹔它的功能就是讓我們可以召喚
Thumbnail
1.0 從函數到函算語法 1.4 函算語法 1.4.1 語法範疇理論導論 1.4.2 函算語法與函數概念 三 弗雷格從語言結構的觀點出發,提出了函數可以被視為一個不完整的表式。如果我們將一個函數拆解為一個由一個函子及其 (一個或多個) 論元所組成的表式,那麼該函子便是一個有待滿足的
Thumbnail
1.0 從函數到函算語法 1.4 函算語法 1.4.1 語法範疇理論導論 1.4.2 函算語法與函數概念 三 弗雷格從語言結構的觀點出發,提出了函數可以被視為一個不完整的表式。如果我們將一個函數拆解為一個由一個函子及其 (一個或多個) 論元所組成的表式,那麼該函子便是一個有待滿足的
Thumbnail
本文介紹 Kotlin 中類別的定義方法與實際應用,以及類別的好處和優點。透過實例說明,讓讀者更了解如何在 Kotlin 中使用類別來實現相關功能。
Thumbnail
本文介紹 Kotlin 中類別的定義方法與實際應用,以及類別的好處和優點。透過實例說明,讓讀者更了解如何在 Kotlin 中使用類別來實現相關功能。
Thumbnail
你會在程式裡面寫函數嗎? 通常寫函數的第一個問題,就是要給函數取名字。 名字取得不好,後來調用函數不自然,就會拖垮整個寫程式的效率。 為函數命名,也是一門技術,好的函數命名,就能提高函數被重複使用的頻率。 然而,也是在某些情況下,我們需要「一次性函數」。 沒錯,用完即丟的函數。
Thumbnail
你會在程式裡面寫函數嗎? 通常寫函數的第一個問題,就是要給函數取名字。 名字取得不好,後來調用函數不自然,就會拖垮整個寫程式的效率。 為函數命名,也是一門技術,好的函數命名,就能提高函數被重複使用的頻率。 然而,也是在某些情況下,我們需要「一次性函數」。 沒錯,用完即丟的函數。
Thumbnail
當我們需要給某個系統或應用程序添加一種新的語言或表達式時,解譯器模式就派上了用場。這種模式提供了一種將句子或表達式分解成多個令牌的方法,然後根據這些令牌進行解釋或解析。
Thumbnail
當我們需要給某個系統或應用程序添加一種新的語言或表達式時,解譯器模式就派上了用場。這種模式提供了一種將句子或表達式分解成多個令牌的方法,然後根據這些令牌進行解釋或解析。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News