首頁 Java java教程 interface和abstract class的差別

interface和abstract class的差別

Feb 17, 2020 pm 02:25 PM
interface 差別

interface和abstract class的差別

interface和abstract class的區別

#interface和abstract class之間有很大的區別的,對於它們的選擇甚至反映出對於問題領域本質的理解、對於設計意圖的理解是否正確、合理。

 

#Abstract class

Interface

#實例化
不能

不能

#類別
一種繼承關係,一個類別只能使用一次繼承關係。可以透過繼承多個介面來實現多重繼承

一個類別可以實作多個interface

資料成員
可有自己的

靜態的不能被修改即必須是static final,一般不在此定義

方法
可以私有的,非abstract方法,必須實作

不可有私有的,預設是public,abstract 類型

變數
可有私有的,預設是friendly 型,其值可以在子類別中重新定義,也可以重新賦值

不可有私有的,預設是public static final 型,且必須給其初步值,實作類別中不能重新定義,不能改變其值。

設計概念
表示的是「is-a」關係


#表示的是「like-a」關係

實作

需要繼承,要用extends

要用implements

#1、相同點

A. 兩者都是抽象類,都不能實例化。

B. interface實作類別及abstrct class的子類別都必須要實作已經宣告的抽象方法。

推薦學習:

java教學

2、不同點

A. interface需要實現,要用implements,而abstract class需要繼承,要用extends。

B. 一個類別可以實作多個interface,但一個類別只能繼承一個abstract class。

C. interface強調特定功能的實現,而abstract class強調所屬關係。

D. 雖然interface實作類別及abstrct class的子類別都必須要實作對應的抽象方法,但實作的形式不同。 interface中的每一個方法都是抽象方法,都只是宣告的 (declaration, 沒有方法體),實作類別必須實作。而abstract class的子類別可以選擇性地實作。

3、interface的應用程式場合

A. 類別與類別之前需要特定的介面進行協調,而不在乎如何實作。 ######B. 作為能夠實現特定功能的標識存在,也可以是什麼介面方法都沒有的純粹標識。 ######C. 需要將一組類別視為單一的類,而呼叫者只透過介面來與這組類別發生聯繫。 ######D. 需要實現特定的多項功能,而這些功能之間可能完全沒有任何關聯。 #########4.、abstract class的應用場合#########一句話,在既需要統一的接口,又需要實例變數或缺省的方法的情況下,就可以使用它。最常見的有:######A. 定義了一組接口,但又不想強迫每個實作類別都必須實作所有的介面。可以用abstract class定義一組方法體,甚至可以是空方法體,然後由子類別選擇自己感興趣的方法來覆寫。 ######B. 某些場合下,只靠純粹的介面不能滿足類別與類別之間的協調,也必需類別中表示狀態的變數來區別不同的關係。 abstract的中介作用可以很好地滿足這一點。 ######C. 規範了一組相互協調的方法,其中一些方法是共同的,與狀態無關的,可以共享的,無需子類分別實現;而另一些方法卻需要各個子類根據自己特定的狀態來實現特定的功能。 ######更多###程式教學###,永續關注PHP中文網。        ####

以上是interface和abstract class的差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PS導出PDF如何設置密碼保護 PS導出PDF如何設置密碼保護 Apr 06, 2025 pm 04:45 PM

在 Photoshop 中導出帶密碼保護的 PDF:打開圖像文件。點擊“文件”>“導出”>“導出為 PDF”。設置“安全性”選項,兩次輸入相同的密碼。點擊“導出”生成 PDF 文件。

c語言函數的基本要求有哪些 c語言函數的基本要求有哪些 Apr 03, 2025 pm 10:06 PM

C語言函數是代碼模塊化和程序搭建的基礎。它們由聲明(函數頭)和定義(函數體)組成。 C語言默認使用值傳遞參數,但也可使用地址傳遞修改外部變量。函數可以有返回值或無返回值,返回值類型必須與聲明一致。函數命名應清晰易懂,使用駝峰或下劃線命名法。遵循單一職責原則,保持函數簡潔性,以提高可維護性和可讀性。

c語言函數的概念 c語言函數的概念 Apr 03, 2025 pm 10:09 PM

C語言函數是可重複利用的代碼塊,它接收輸入,執行操作,返回結果,可將代碼模塊化提高可複用性,降低複雜度。函數內部機制包含參數傳遞、函數執行、返回值,整個過程涉及優化如函數內聯。編寫好的函數遵循單一職責原則、參數數量少、命名規範、錯誤處理。指針與函數結合能實現更強大的功能,如修改外部變量值。函數指針將函數作為參數傳遞或存儲地址,用於實現動態調用函數。理解函數特性和技巧是編寫高效、可維護、易理解的C語言程序的關鍵。

H5和小程序與APP的區別 H5和小程序與APP的區別 Apr 06, 2025 am 10:42 AM

H5、小程序和APP的主要區別在於:技術架構:H5基於網頁技術,小程序和APP為獨立應用程序。體驗和功能:H5輕便易用,功能受限;小程序輕量級,交互性好;APP功能強大,體驗流暢。兼容性:H5跨平台兼容,小程序和APP受平台限制。開發成本:H5開發成本低,小程序中等,APP最高。適用場景:H5適合信息展示,小程序適合輕量化應用,APP適合複雜功能應用。

在router文件夾下的index.js文件中為什麼需要調用Vue.use(VueRouter)? 在router文件夾下的index.js文件中為什麼需要調用Vue.use(VueRouter)? Apr 05, 2025 pm 01:03 PM

在router文件夾下的index.js文件中註冊VueRouter的必要性在開發Vue應用程序時,常常會遇到關於路由配置的問題。特�...

c和c#的區別和聯繫有哪些 c和c#的區別和聯繫有哪些 Apr 03, 2025 pm 10:36 PM

C和C#雖有類似之處,但截然不同:C是面向過程、手動內存管理、平台依賴的語言,用於系統編程;C#是面向對象、垃圾回收、平台獨立的語言,用於桌面、Web應用和遊戲開發。

JavaScript中如何從指定DOM節點下使用XPath進行查找? JavaScript中如何從指定DOM節點下使用XPath進行查找? Apr 04, 2025 pm 11:15 PM

DOM節點下XPath查找方法詳解在JavaScript中,我們經常需要根據XPath表達式從DOM樹中查找特定的節點。如果需要從某�...

H5和小程序的推廣方式有何不同 H5和小程序的推廣方式有何不同 Apr 06, 2025 am 11:03 AM

H5與小程序的推廣方式存在差異:平台依賴性:H5依賴瀏覽器,小程序依賴特定平台(如微信)。用戶體驗:H5體驗較差,小程序提供類似原生應用的流暢體驗。傳播方式:H5通過鏈接傳播,小程序通過平台分享或搜索。 H5推廣方式:社交分享、郵件營銷、QR碼、SEO、付費廣告。小程序推廣方式:平台推廣、社交分享、線下推廣、ASO、與其他平台合作。

See all articles