1. 程式人生 > >抽象類和介面區別及應用場景

抽象類和介面區別及應用場景

區別如下:

1.抽象類是對類的抽象(包括了屬性和對應的行為).
  介面是對某一個行為動作的抽象。
2.抽象類只能單繼承,介面可以實現多繼承。
3.介面中定義的方法不能實現,即使不顯示的將方法宣告為public,他們也是
public。
  抽象類中的方法可以部分實現。
4.抽象類中可以被任意許可權修飾符修飾,static/非static,final/非final,
可以有抽象方法和非抽象方法。
  介面中的域預設的為public  static final。即不可更改的動作。   

interface的應用場合
A. 類與類之前需要特定的介面進行協調,而不在乎其如何實現。
B. 作為能夠實現特定功能的標識存在,也可以是什麼介面方法都沒有的純粹標識。
C. 需要將一組類視為單一的類,而呼叫者只通過介面來與這組類發生聯絡。
D. 需要實現特定的多項功能,而這些功能之間可能完全沒有任何聯絡。

abstract class的應用場合
一句話,在既需要統一的介面,又需要例項變數或預設的方法的情況下,就可以使用它。最常見的有:
A. 定義了一組介面,但又不想強迫每個實現類都必須實現所有的介面。可以用abstract class定義一組方法體,甚至可以是空方法體,然後由子類選擇自己所感興趣的方法來覆蓋。
B. 某些場合下,只靠純粹的介面不能滿足類與類之間的協調,還必需類中表示狀態的變數來區別不同的關係。abstract的中介作用可以很好地滿足這一點。
C. 規範了一組相互協調的方法,其中一些方法是共同的,與狀態無關的,可以共享的,無需子類分別實現;而另一些方法卻需要各個子類根據自己特定的狀態來實現特定的功能

相關推薦

抽象介面區別應用場景

區別如下: 1.抽象類是對類的抽象(包括了屬性和對應的行為). 介面是對某一個行為動作的抽象。 2.抽象類只能單繼承,介面可以實現多繼承。 3.介面中定義的方法不能實現,即使不顯示的將方法宣告為public,他們也是 public。 抽象類中的方法可以

抽象介面區別

抽象類: 一個類被abstract關鍵字修飾就是抽象類。 定義很簡短,可能會有很多朋友質疑,《java程式設計思想》中說含有抽象方法的類就是抽象類,我試了下只要用abstract修飾的都是抽象類,就算裡面不含有抽象方法,語法層面也是正確的。下面所有關於抽象類的總結都是基於

mybatis 中 #{} ${} 的區別應用場景

一、#{} 和 ${} 詳解 動態 sql 是 mybatis 的主要特性之一,在 mapper 中定義的引數傳到 xml 中之後,在查詢之前 mybatis 會對其進行動態解析。mybatis 為我們提供了兩種支援動態 sql 的語法:#{} 以及 ${}

抽象介面區別 以及選擇抽象介面應用場景

介面和抽象類有什麼區別 你選擇使用介面和抽象類的依據是什麼? 介面和抽象類的概念不一樣。介面是對動作的抽象,抽象類是對根源的抽象。 抽象類表示的是,這個物件是什麼。介面表示的是,這個物件能做什麼。比如,男人,女人,這兩個類(如果是類的話……),他們的抽象類是人。說

Java中抽象介面的介紹二者間的區別

  介面(Interface)和抽象類(Abstract Class)是支援抽象類定義的兩種機制。 一、抽象類   在Java中被abstract關鍵字修飾的類稱為抽象類,被abstract關鍵字修飾的方法稱為抽象方法,抽象方法只有方法的宣告,沒有方法體。抽象類是用來捕捉子類的通用特性的 。它不能被例項化,只

關於debouncethrottle的區別應用場景

scroll NPU str win 兩種 區別 個人 沒有 tro 電梯超時 想象每天上班大廈底下的電梯。把電梯完成一次運送,類比為一次函數的執行和響應。假設電梯有兩種運行策略 `throttle` 和 `debounce` ,超時設定為15秒,不考慮容量限制。 thro

C# 通過 Observer觀察者 設計模式 來理解 抽象 介面 應用在什麼地方

什麼時候用抽象類?什麼時候用介面?怎麼理解抽象類?怎麼理解介面? 一、百度解釋抽象類和介面的區別 總而言之就是一句話:抽象類可以包含具體實現,介面只能包含定義。 實現介面時必須實現介面定義的方法等,抽象類中如果給方法加上了“abstract”,那麼這個方法也需要在繼承後實現這個

16 baseService(抽象介面區別

          從語法層面而言,介面和抽象類的區別如下: 1.抽象類可以提供成員方法的實現細節,而介面中只能存在抽象方法(預設 public abstract) 2.抽象類中的成員變數可以是多種型別,而介面中

Java——抽象介面區別

一.  區別 1.語法層面上的區別   1)抽象類可以提供成員方法的實現細節,而介面中只能存在public abstract 方法;   2)抽象類中的成員變數可以是各種型別的,而介面中的成員變數只能是public static final型別的;   3)介面中不能含有靜

一、基礎篇--1.1Java基礎-抽象介面區別

抽象類和介面的區別 抽象類和介面在設計層面的區別主要體現在:介面是對動作的抽象,抽象類是對根源、類的抽象。抽象類表示的是,這個物件是什麼,介面表示的是,這個物件可以做什麼。 比如,男人、女人是人,人是男人女人的抽象類。人可以吃東西,動物也可以吃東西,人還有各種行為,吃東西就可以定義為一種介面。 語法上具

抽象介面區別

抽象類和介面的區別:A:成員區別 抽象類: 成員變數:可以變數,也可以常量 構造方法:有 成員方法:可以抽象,也可以非抽象 介面: 成員變數:只可以常量 成員方法:只可以抽象 B:關係區別 類與類 繼承,單繼承 類與介面 實現,單實現,多實現 介面與介面 繼承,單繼承,多繼承 C:設計理念區別 抽象類 被繼承

抽象介面的異同例項解析

與具體類比較 抽象類不能直接例項化,並且對抽象類使用 new 運算子會導致 編譯時錯誤。雖然一些變數和值在編譯時的 型別可以是抽象的,但是這樣的變數和值必須或者為 null,或者含有對非抽象類的例項的 引用(此非抽象類是從抽象類派生的)。

舉例說明java中抽象介面區別

先定義一個介面: 介面中定義了兩個方法,現在定義一個普通類實現這個介面: 這時候發現報錯了,以前只知道實現介面必須實現其中的方法,卻不知道為什麼要實現。最近才瞭解到: 如果一個類繼承了某個抽象類或者實現了某個介面都需要對其中的抽象方法進行實現,否則該類需要被宣告為

(轉)詳細解析Java中抽象介面區別

原文地址:https://zhuanlan.zhihu.com/p/50989401 在Java語言中, abstract class 和interface 是支援抽象類定義的兩種機制。正是由於這兩種機制的存在,才賦予了Java強大的 面向物件能力。abstract class和interface之間在對於

Java設計模式 挑戰2.1-抽象介面區別

參考來源:https://blog.csdn.net/chenssy/article/details/12858267  感謝原作者!! 1.語法層次        抽象類可以擁有任意範圍的成員資料,同時也可以擁有自己的非抽象方法。但是介面僅

TCPUDP的區別應用場景

面試題回答: TCP和UDP的區別 (1)TCP是面向連線的,udp是無連線的即傳送資料前不需要先建立連結。 (2)TCP提供可靠的服務。也就是說,通過TCP連線傳送的資料,無差錯,不丟失,不重複,且按序到達;UDP盡最大努力交付,即不保證可靠交付。 並且因為tcp可靠,面向連線,不會丟

抽象介面區別

類實現介面可以通過implements實現,實現介面的時候必須把介面中的所有方法實現,一個類可以實現多個介面。 介面中定義的所有的屬性預設是public static final的,即靜態常量既然是常量,那麼定義的時候必須賦值。 介面中定義的方法不能有方法體。介面中定義的方法預設新增public abst

Java中抽象介面的具體區別 都分別什麼時候用

學習Java已經一個月的時間了,期間經歷了從入門到放棄再到重拾信心重新奮鬥。今天的學習總結是關於Java中抽象類和介面的區別總結。 一、Java抽象類 1.抽象類必須用 abstract修飾 2.如果一個類有abstract方法,這個類一定是抽象類 3.抽象類不一定有抽象方法 4.抽象類

面試題_抽象介面區別

含有abstract修飾符的class 即為抽象類。abstract類不能建立例項物件;含有abstract的方法的類必須定義為abstract class ;abstract class 裡的方法不必是抽象的;抽象類中定義抽象方法必須放在具體子類中實現;所以呀,不能有抽象的

java-抽象介面區別

1、成員區別:  -  抽象類     *  成員變數:可以變數,也可以常量     *  構造方法:有     *  成員方法:可以抽象,也可以非抽象  -  介面     *  成員變數:只可以