對抽象類和介面的理解

2021-07-16 14:58:46 字數 983 閱讀 2958

abstract class

inte***ce

1.定義方式

abstract

class demo{

abstract

void method1();

abstract

void method2();…}

(可以有抽象和非抽象的方法)

inte***ce

demo

(不可以有具體的方法)

2.使用上

所以根據他們的特性,abstract class 類可以定義預設行為,而inte***ce不行,因此,如果要修改使用在多處的方法,inte***ce會很麻煩,可能要修改多處,而abstract class就只用修改預設方法。

從設計層面

繼承關係要求子類和父類在概念本質上是相同的

abstract class 表示「is-a」的關係(本質上是)

inte***ce 表示「like-a」的關係(具有什麼的功能)

選用介面和抽象類的時候,要弄清楚物件的本質和它要實現的另外的方法

本質用abstract class ,功能用inte***ce

介面使用原則——介面隔離原則

isp簡介(isp–inte***ce segregation principle):

使用多個專門的介面比使用單一的總介面要好。

乙個類對另外乙個類的依賴性應當是建立在最小的介面上的。

乙個介面代表乙個角色,不應當將不同的角色都交給乙個介面。沒有關係的介面合併在一起,形成乙個臃腫的大介面,這是對角色和介面的汙染。

「不應該強迫客戶依賴於它們不用的方法。介面屬於客戶,不屬於它所在的類層次結構。」這個說得很明白了,再通俗點說,不要強迫客戶使用它們不用的方法,如果強迫使用者使用它們不使用的方法,那麼這些客戶就會面臨由於這些不使用的方法的改變所帶來的改變。

對抽象類和介面的理解

二者不同 抽象類 1.抽象類中可以定義構造器 2.可以有抽象方法和具體方法 3.介面中的成員全都是 public 的 4.抽象類中可以定義成員變數 5.有抽象方法的類必須被宣告為抽象類,而抽象類未必要有抽象方法 6.抽象類中可以包含靜態方法 7.乙個類只能繼承乙個抽象類 介面 1.介面中不能定義構造...

抽象類和介面的理解

1.抽象類 抽象類更像是乙個模板,它擁有類的所用功能,它不僅可以寫抽象方法,也可以寫實現的方法,定義變數等等。總歸他有類的一切功能只是不能被例項化而已。它有單繼承的功能。2.介面 介面更像是對於行為上的定義,它是抽象方法的集合。它的變數會被private static final預設修飾。他可以擁有...

java 抽象類和介面的理解

在物件導向的概念中,我們知道所有的物件都是通過類來描繪的,但是並不是所有的類都是用來描繪物件的,如果乙個類中沒有包含足夠的資訊來描繪乙個具體的物件,這樣的類就是抽象類。抽象類往往用來表徵我們在對問題領域進行分析 設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象,我們不能把它...