Java 設計模式 Day2 之面向抽象原則:接口(interface)的設計應用與抽象類的區別

文章目錄

  • 前言
  • 一、接口(interface)的設計要點與抽象類的區別
  • 二、接口(interface)的應用實例
    • 2.1、創建一個接口(interface)
    • 2.2、創建實現接口的類
    • 2.3、通過接口回調調用被類實現的方法
  • 總結


前言

面向抽象原則是面向對象四大基本原則的第一條,其重要性不言而喻,面向抽象原則分為抽象類、接口以及面向抽象編程,由于篇幅有限本文我們主要細說接口(interface)的設計與應用,并通過引入案例的形式使概念更便于理解。除去介紹接口(interface)的設計與應用,同時對兩個特別容易混淆的概念——抽象(abstract)類與接口(interface)進行對比。

在這里插入圖片描述


一、接口(interface)的設計要點與抽象類的區別

  • 接口中只可以有 public 權限的 abstract 方法,不能有非 abstract 方法。注意這里接口與抽象類的區別,抽象類中既可以有 abstract 方法,也可以有非 abstract 方法
  • 接口由類去實現,即一個類如果實現一個接口就必須重寫接口中的 abstract 方法,即將 abstract 方法重新聲明,但必須去掉 abstract 修飾符,同時要保證聲明的方法名字、返回類型、參數個數和接口中的方法完全相同。這一點與抽象類的非抽象子類重寫父類 abstract 方法的要求是相同的
  • 接口回調。接口回調是指把實現接口的類的對象的引用賦給該接口聲明的接口變量中,這時該接口變量就可以調用被類實現的接口中的方法。接口回調原理類似于抽象類中的上轉型對象調用子類方法的過程

二、接口(interface)的應用實例

2.1、創建一個接口(interface)

首先我們創建一個接口(interface)Com,里面有一個 abstract 方法 sub(int x, int y),相應代碼如下:

package com.bailu.principle;/** 接口中只可以有public權限的abstract方法,不能有非abstract方法*/
public interface Com {public abstract int sub(int x, int y);
}

2.2、創建實現接口的類

接著我們創建實現接口 Com 的類 ComImp,并且重寫接口中的 abstract 方法 sub(int x, int y),將其實現為計算參數 x 與 y 的差,相應代碼如下:

package com.bailu.principle;/** 接口由類去實現,一個類如果實現一個接口,就必須重寫接口中的abstract方法* 重新將接口中的abstract方法聲明,但必須去掉abstract修飾符去掉* 同時要保證聲明的方法名字、返回類型、參數個數和接口中的方法完全相同* 這一點與抽象類的子類重寫抽象類的abstract方法相同*/
public class ComImp implements Com {// 在重寫Com接口中abstract方法的同時,將其實現為計算參數x與y的差@Overridepublic int sub(int x, int y) {return x - y;}
}

2.3、通過接口回調調用被類實現的方法

通過上述接口回調的原理,這里我們讓 Com 接口聲明的接口變量 com 存放 ComImp 類的對象的引用,那么這時 com 就可以調用 ComImp 類中實現的接口的方法 sub(int x, int y),相應代碼如下:

package com.bailu.principle;/** 讓Com接口聲明的接口變量com存放ComImp類的對象引用* 那么com就可以調用ComImp類實現的接口中的方法*/
public class ApplicationImpl {public static void main(String[] args) {Com com;com = new ComImp();// com變量存放ComImp類的對象的引用int m = com.sub(6, 3);// com回調ComImp類實現的接口方法System.out.println(m);}
}

運行結果如下圖所示:

在這里插入圖片描述


總結

在本文給大家介紹了面向抽象原則概念中的接口的內容,說明了在開發中接口(interface)的設計要點,并在設計要點中與抽象(abstract)類的內容進行了對比,最為明顯的一點區別就是,在抽象(abstract)類中既可以有 abstract 方法,也可以有非 abstract 方法,而在接口中只能有 public 權限的 abstract 方法,不能有非 abstract 的方法。另外,多注意在抽象類中提到的上轉型對象與接口中的接口回調兩個核心概念。

在這里插入圖片描述


我是白鹿,一個不懈奮斗的程序猿。望本文能對你有所裨益,歡迎大家的一鍵三連!若有其他問題、建議或者補充可以留言在文章下方,感謝大家的支持!

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

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

相關文章

Java 設計模式 Day3 之面向抽象原則:什么是面向抽象編程?面向抽象編程如何應用?

文章目錄前言一、什么是面向抽象編程?二、傳統場景的類設計2.1、項目場景設計2.2、傳統類設計存在的問題三、采用面向抽象編程的類設計3.1、設計一個抽象類/接口3.2、采用上轉型對象/接口回調調用子類方法3.3、重新設計子類/被實現類3.4、面向抽象編程的具體實現四、…

贏在 CSDN:我在 CSDN 的成長,“長風破浪會有時”,如何保證自己有持續寫作的動力?

文章目錄前言一、如何結緣 CSDN?1.1、我的“黑客之路”初探1.2、CSDN 一眼看得到的優勢是什么?1.3、大學再遇 CSDN二、為什么開始在 C 站輸出內容?2.1、“好記性不如爛筆頭”2.2、記事本到“鼓勵工具”三、C 站吸引我的地方是什么?3.1、海量…

華為工業云平臺:制造業企業數據平臺建設最佳實踐分享

文章目錄前言一、制造行業數字化轉型和發展趨勢1.1、制造行業數字化轉型發展趨勢1.2、制造行業數字化轉型遇到的挑戰1.3、政策牽引,加快數字化轉型升級二、數字化轉型-業務角度2.1、智能生產2.2、智能銷售2.3、智能物流2.4、智能供應鏈2.5、智慧決策三、數字化轉型-…

計算機本科畢業設計:畢業設計、論文要點及我們面對畢業答辯應持有的態度

文章目錄前言一、對于畢業設計1.1、選題1.2、中期自查1.3、畢業設計答辯二、對于畢業論文三、我們應持有的態度3.1、人盡其才3.2、恪盡職守3.3、全力以赴3.4、做好自己總結前言 最近不斷有很多學弟、學妹來找我咨詢一些關于畢設、論文答辯的問題,一看日歷四月份了&a…

Eclipse 答疑:Eclipse 使用 Amateras UML 創建類圖點擊 Finish 沒反應解決方式匯總

文章目錄前言一、問題產生場景1.1、Amateras UML 創建類圖沒反應二、問題原因分析三、問題定位及解決3.1、定位檢查版本支持信息3.2、問題確認過程3.3、解決方式驗證四、不想降低版本怎么辦?總結前言 之前項目中在 Eclipse 使用 Amateras UML 創建類圖點擊 Finish 沒…

DDoS 攻擊與防護(二):DDoS 防護購買和使用入門指南,DDoS 防護服務有哪些應用場景?

文章目錄前言一、如何選擇 DDoS 高防和 DDoS 原生高級防護?二、如何購買和使用 DDoS 高防?2.1、購買 DDoS 高防2.2、DDoS 高防域名網站類業務接入流程2.3、配置防護域名2.4、上傳證書2.5、選擇實例和線路2.6、本地驗證2.7、修改 DNS 解析2.8、放行高防回…

Java 大廠面試必刷題 Day1:何為面向對象編程的思想?面向對象三大特征是什么?

文章目錄 前言一、何為面向對象編程的思想?二、面向對象的三大特征2.1、封裝關系2.2、繼承關系2.3、多態關系總結前言 從本文我們將開始《Java 大廠面試必刷題》系列的更新,Java 面試必刷題 Day1:何為面向對象編程的思想?面向對象三大特征是什么?這道題對于 Java 從業者來…

猿創征文|2022 互聯網從業心得:“但愿人長久,千里共嬋娟”,中秋先學會與自己內心團圓

文章目錄前言一、“好雨知時節,當春乃發生”1.1、《性格修正:如何突破你的原生性格》1.2、“疼我孰知父母”1.3、“海內存知己,天涯若比鄰”二、“讀萬卷書,行萬里路”2.1、“讀萬卷書”2.2、“行萬里路”三、“身體是革命的本錢”…

猿創征文|彈性云服務器 ECS:輕松上云第一步,如何根據應用場景購買和使用入門 ECS?

文章目錄前言一、什么是彈性云服務器?1.1、ECS 介紹1.2、為什么選擇 ECS?1.3、ECS 產品架構1.4、ECS 產品優勢二、彈性云服務器的實例類型三、彈性云服務器的購買3.1、基礎配置3.1.1、計費模式3.1.2、區域3.1.3、可用區3.1.4、CPU 架構3.1.5、規格3.1.6、…

猿創征文|不會代碼也能玩開發?基于華為云 IoT 快速實現 0 代碼體驗物聯網設備上云

文章目錄前言一、物聯網設備上云背景介紹二、實驗環境準備三、智慧煙感器上云體驗3.1、選擇向導式極速體驗3.2、對智慧煙感器進行產品定義3.3、定義目標設備標識碼、注冊設備3.4、根據需要選擇設備演示包3.5、下載、解壓設備演示包3.6、執行 bat 文件,運行設備演示包…

猿創征文|基于 AppCube 應用魔方:零代碼手把手教你 5 分鐘開發微信小程序

文章目錄前言一、AppCube 應用魔方1.1、什么是 AppCube 應用魔方?1.2、為什么選擇AppCube 應用魔方?二、項目實驗環境與資源準備2.1、實驗需求及環境介紹2.2、初次訂購 AppCube2.3、曾訂購過 AppCube三、進入 AppCube 全新零代碼界面四、配置業務用戶信息…

《軟件質量保證與測試》第 6 章——系統測試 重點部分總結

文章目錄 前言一、判斷題二、簡答題總結前言 軟件質量保證是建立一套有計劃,有系統的方法,來向管理層保證擬定出的標準、步驟、實踐和方法能夠正確地被所有項目所采用。軟件測試是使用人工或自動的手段來運行或測定某個軟件系統的過程,其目的在于檢驗它是否滿足規定的需求或…

《軟件質量保證與測試》第 9 章——測試自動化及其框架 重點部分總結

文章目錄 前言一、判斷題二、簡答題總結前言 軟件質量保證是建立一套有計劃,有系統的方法,來向管理層保證擬定出的標準、步驟、實踐和方法能夠正確地被所有項目所采用。軟件測試是使用人工或自動的手段來運行或測定某個軟件系統的過程,其目的在于檢驗它是否滿足規定的需求或…

一個長方體玻璃容器從里面量長寬_養觀賞魚用玻璃魚缸嗎?3種常見養魚容器,另外2種養魚效果不差...

養魚需要容器,不過我們常見的容器主要還是玻璃缸,長方形的玻璃缸。不過其實從玻璃缸這方面繼續延伸下去,還有一些熱彎,負壓,異形等等的魚缸款式,這樣說起來就比較多了。不過養魚的容器是僅僅限于玻璃類容器…

java中間件是什么意思_數據庫中間件漫談

1.前言隨著業務的發展,MySQL數據庫中的表會越來越多,表中的數據量也會越來越大,相應地,數據操作的開銷也會越來越大;另外,無論怎樣升級硬件資源,單臺服務器的資源(CPU、磁盤、內存、…

kafka多個消費者消費一個topic_kafka:一文讀懂消費者背后的那點quot;貓膩quot;

來自:z小趙前言經過前幾篇文章的介紹,大致了解了生產者背后的運行原理。消息有生產就得有人去消費,今天我們就來介紹下消費端消費消息背后發生的那點事兒。文章概覽消費者與消費組的“父子關系”。Repartition 觸發時機。消費者與 ZK 的關系。…

MySQL 入門教程:初學者一學就會,零基礎 MySQL 安裝及增刪改查入門

文章目錄前言一、MySQL 的相關概念介紹二、Windows 下 MySQL 的配置2.1、MySQL 安裝配置步驟2.2、MySQL 服務的啟動、停止與卸載三、MySQL 腳本的基本組成四、MySQL 中的數據類型4.1、數字類型4.2、日期和時間4.3、字符串類型五、使用 MySQL 數據庫5.1、登錄到 MySQL5.2、創建一…

四大基本反應類型的關系_如何進入四大的咨詢部門?

在會計行業,人人夢寐以求的職位,莫過于四大的財務咨詢的崗位,第一咨詢工作很高大上,第二沒有其他職位那么幸苦,我從我的工作經歷來講講,我是怎么進入咨詢這個“真香”崗位的。首先,給大家說一個…

MySQL 異常:這一篇就夠了,MySQL 拋出異常的幾種常見解決方式小結

Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: Connections could not be acquired from the underlying database! 幾種解決方式小結 文章目錄Could not open JDBC Connection for transaction; nested exception is java.sql…

vnc用戶名 查看linux_vnc用戶名未被識別,5步教你如何解決vnc用戶名未被識別

在進行vnc使用時,很多小伙伴會出現用戶名未被識別的情況,那如何解決vnc用戶名未被識別呢?咱接著往下看。使用工具:IIS7服務器管理工具主程序界面圖:官網地址:IIS7服務器管理工具作為IIS7服務器管理工具&…