安卓基礎(接口interface)

??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()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/78654.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/78654.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/78654.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux0.11內存管理:相關代碼

ch13_2 源碼分析 boot/head.s 頁表初始化: 目標:初始化分頁機制,將線性地址空間映射到物理內存(前 16MB),為保護模式下的內存管理做準備。核心流程 分配頁目錄表和頁表的物理內存空間(通過 .…

【Redis】set類型

目錄 1、介紹2、底層實現【1】整數集合【2】哈希表 3、常用指令 1、介紹 Redis的set集合類型是一種無序且元素唯一的數據結構,支持高效的成員判斷、集合運算和隨機訪問。 2、底層實現 【1】整數集合 適用場景 當集合中所有的元素都是整數,且元素數量…

web技術與nginx網站環境部署

一:web基礎 1.域名和DNS 1.1域名的概念 網絡是基于TCP/IP協議進行通信和連接的,每一臺主機都有一個唯一的標識(固定的IP地址),用以區別在網絡上成千上萬個用戶和計算機。網絡在區分所有與之相連的網絡和主機時,均采用一種唯一、通用的地址…

LeetCode【劍指offer】系列(動態規劃篇)

劍指offer10-I.斐波那契數列 題目鏈接 題目:斐波那契數(通常用F(n)表示)形成的序列稱為斐波那契數列 。該數列由 0 和 1 開始,后面的每一項數字都是前面兩項數字的和。也就是: F(0) 0,F(1) 1 F(n) F(…

JVM 內存分配策略

引言 在 Java 虛擬機(JVM)中,內存分配與垃圾回收是影響程序性能的核心機制。內存分配的高效性直接決定了對象創建的速率,而垃圾回收策略則決定了內存的利用率以及系統的穩定性。為了在復雜多變的應用場景中實現高效的內存管理&am…

【二分查找】尋找峰值(medium)

6. 尋找峰值(medium) 題?描述:解法?(?分查找算法):算法思路:C 算法代碼:Java 算法代碼: 題?鏈接:162. 尋找峰值 題?描述: 峰值元素是指其值…

MongoDB與PHP7的集成與優化

MongoDB與PHP7的集成與優化 引言 隨著互聯網技術的飛速發展,數據庫技術在現代軟件開發中扮演著越來越重要的角色。MongoDB作為一種流行的NoSQL數據庫,以其靈活的數據模型和強大的擴展性受到眾多開發者的青睞。PHP7作為當前最流行的服務器端腳本語言之一,其性能和穩定性也得…

【GIT】github中的倉庫如何刪除?

你可以按照以下步驟刪除 GitHub 上的倉庫(repository): 🚨 注意事項: ??刪除倉庫是不可恢復的操作,所有代碼、issue、pull request、release 等內容都會被永久刪除。 🧭 刪除 GitHub 倉庫步驟…

焊接機排錯

焊接機 一、前定位后焊接 兩個機臺,①極柱定位,相機定位所有極柱點和mark點;②焊接機,相機定位mark點原理:極柱定位在成功定位到所有極柱點和mark點后,可以建立mark點和極柱點的關系。焊接機定位到mark點…

認識和使用Vuex-案例

集中管理共享的數據,易于開發和后期維護;能夠高效的實現組件之間的數據共享,提高開發效率;存儲在Vuex的數據是響應式的,能夠實時保持頁面和數據的同步; 安裝Vuex依賴包 npm install vuex --save導入包 im…

LLM大模型中的基礎數學工具—— 信號處理與傅里葉分析

Q51: 推導傅里葉變換 的 Parseval 定理 傅里葉變換的 Parseval 定理揭示了啥關系? Parseval 定理揭示了傅里葉變換中時域與頻域的能量守恒關系,即信號在時域的總能量等于其在頻域的總能量。這就好比一個物體無論從哪個角度稱重,重量始終不…

對Mac文字雙擊或三擊鼠標左鍵沒有任何反應

目錄 項目場景: 問題描述 原因分析: 解決方案: 項目場景: 在使用Mac系統的時候,使用Apple無線鼠標,雙擊左鍵能夠選取某個單詞或詞語,三擊左鍵能夠選取某一行,(百度、…

Go語言企業級項目使用dlv調試

使用dlv調試Go語言代碼 打包Go代碼(禁止優化和內聯(便于調試更復雜的邏輯)): go build -gcflags"all-N -l" -o xxx_api_debug.exe啟動一個dlb監聽可運行程序的端口: dlv --listen:2345 --headlesstrue --api-version…

Kafka命令行的使用/Spark-Streaming核心編程(二)

Kafka命令行的使用 創建topic kafka-topics.sh --create --zookeeper node01:2181,node02:2181,node03:2181 --topic test1 --partitions 3 --replication-factor 3 分區數量,副本數量,都是必須的。 數據的形式: 主題名稱-分區編號。 在…

Python3:Jupyterlab 安裝和配置

Python3:Jupyterlab 安裝和配置 Jupyter源于Ipython Notebook項目,是使用Python(也有R、Julia、Node等其他語言的內核)進行代碼演示、數據分析、機器學習、可視化、教學的非常好的工具。 最新的基于web的交互式開發環境,適用于n…

快速排序及其在Unity游戲開發中的應用

一、快速排序(Quick Sort) 快速排序是一種**分治法(Divide and Conquer)**思想的排序算法,它的基本步驟是: 選一個基準元素(pivot):通常選第一個元素、最后一個元素,或者隨機一個。分區(Partition):把數組分成兩部分,小于等于 pivot 的放左邊,大于 pivot 的放右…

【硬核干貨】SonarQube安全功能

原文鏈接:【硬核干貨】SonarQube安全功能 關于曉數神州 曉數神州堅持以“客戶為中心”的宗旨,為客戶提供專業的解決方案和技術服務,構建多引擎數字化體系。 核心業務1:聚焦DevOps全棧產品,打造需求管理、項目管理、開…

修改el-select背景顏色

修改el-select背景顏色 /* 修改el-select樣式--直接覆蓋默認樣式(推薦) */ ::v-deep .el-select .el-input__inner {background-color: #1d2b72 !important; /* 修改輸入框背景色 */color: #fff; } ::v-deep .el-select .el-input__wrapper {background-…

Unity-粒子系統:螢火蟲粒子特效效果及參數

螢火蟲特效由兩部分組成。螢火蟲粒子底色粒子面片。螢火蟲的旋轉飛動主要由 Noise參數和Color over Lifetime模塊控制。 貼圖:中間實周邊虛的圓,可隨意自行制作 Shader:Universal Render Pipeline/2D/Sprite-Lit-Default 以下是粒子詳細參…

K8S Service 原理、圖例——深度好文

一、理論介紹 1.1、3W 法則 1、是什么? Service 是一種為一組功能相同的 pod 提供單一不變的接入點的資源。當 Service 存在時,它的IP地址和端口不會改變。客戶端通過IP地址和端口號與 Service 建立連接,這些連接會被路由到提供該 Service 的…