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

2021-08-17 14:56:36 字數 908 閱讀 9446

區別如下:

1.抽象類是對類的抽象(包括了屬性和對應的行為).

介面是對某乙個行為動作的抽象。

2.抽象類只能單繼承,介面可以實現多繼承。

3.介面中定義的方法不能實現,即使不顯示的將方法宣告為public,他們也是

public。

抽象類中的方法可以部分實現。

4.抽象類中可以被任意許可權修飾符修飾,static/非static,final/非final,

可以有抽象方法和非抽象方法。

介面中的域預設的為public static final。即不可更改的動作。

inte***ce的應用場合

a. 類與類之前需要特定的介面進行協調,而不在乎其如何實現。

b. 作為能夠實現特定功能的標識存在,也可以是什麼介面方法都沒有的純粹標識。

c. 需要將一組類視為單一的類,而呼叫者只通過介面來與這組類發生聯絡。

d. 需要實現特定的多項功能,而這些功能之間可能完全沒有任何聯絡。

abstract class的應用場合

一句話,在既需要統一的介面,又需要例項變數或缺省的方法的情況下,就可以使用它。最常見的有:

a. 定義了一組介面,但又不想強迫每個實現類都必須實現所有的介面。可以用abstract class定義一組方法體,甚至可以是空方法體,然後由子類選擇自己所感興趣的方法來覆蓋。

b. 某些場合下,只靠純粹的介面不能滿足類與類之間的協調,還必需類中表示狀態的變數來區別不同的關係。abstract的中介作用可以很好地滿足這一點。

c. 規範了一組相互協調的方法,其中一些方法是共同的,與狀態無關的,可以共享的,無需子類分別實現;而另一些方法卻需要各個子類根據自己特定的狀態來實現特定的功能

部分參考:

抽象類和介面區別

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

抽象類和介面區別

在開發人員崗位面試時,是否了解抽象類和介面之間的基本區別是乙個很重要的考量因素。完全不是。筆者面試過很多人,通常問的第乙個問題是關於介面和抽象類的區別。但實際上很少有程式設計師能給出正確的答案。就這個問題來說,初級程式設計師可能都會清楚之間的區別,可能也並不一定理解其背後的原因,但其結構上的差異,特...

介面和抽象類的應用場景

舉?來說,要描述乙個人 抽象類表示它是什麼 這個人身高 體重 家庭住址 側重用來定義某個領域的固有屬性,也就是本質。介面表示它能做什麼 這個人會打球 游泳 側重用來定義某個領域的擴充套件功能,也就是物件的行為。介面和抽象類的使用場景 當需要為一些類提供公共的實現 時,應優先考慮抽象類。因為抽象類中的...