物件導向 抽象類和介面解析

2021-09-07 18:04:07 字數 864 閱讀 4087

在物件導向程式設計中,我們通過類來描述事物,這個描述可以是抽象的,因為不可能通過類描述所有的屬性和行為,可能同一類事物的不同個體有著行為上的差異。

例如我們想用乙個類描述鳥的所有基本屬性和行為,而所有的鳥都繼承自這個類,我們可以把它稱為基類。

而鳥的叫聲是有差異的,我們很難在基類中定義鳥的這個行為,這時候我們就需要用到抽象方法了,將鳥叫這個行為用抽象方法描述,讓子類物件自己去實現,而包含抽象方法的類也必須宣告為抽象的,這就是抽象類。

總的來說就是:

抽象類可以使用抽象的方式描述事物的行為,具體的行為則讓子類去實現。

介面是比抽象類更加抽象的東西,它裡面所有方法都是公開抽象的。介面只是提供了乙個形式,而為提供任何具體實現。

用乙個很形象的方式來描述介面就是:設計圖。它可以和抽象類一樣當作基類定義,但是它不包含任何實現。而它更有用的乙個作用是用來作為類與類之間的「協議」,因為任何使用某特定介面的**都知道它有哪些方法功能可以使用,而且僅僅需要知道這些。

用法和定義上的區別就不多說了,大家都知道,而這裡主要說下它們的作用。

抽象類的主要作用是讓子類去實現它的某乙個方法,讓子類提供某個例項,或者表現出不同的形式,例如listview中baseadapter的getview方法。

而介面的主要作用是定義乙個類與類之間的「協議」,它更像是被當作乙個工具使用,實現類與類之間的解耦。也可以使用介面代替抽象類,但是你要確定這是不是必須的,否則會帶來不必要的複雜性。

簡單一句話區別抽象類在於:

抽象類的作用在於描述某一行為的抽象性,介面的作用在於定義「協議」。在沒有考慮到這個「協議」是否有用時,不要濫用介面。如果你認為介面是擴充套件乙個類的功能,這並沒有錯,但是你要確定這個功能是會被其它物件給用到,並且該物件也只專注於這個功能。

物件導向 抽象類和介面解析

在物件導向程式設計中,我們通過類來描述事物,這個描述可以是抽象的,因為不可能通過類描述所有的屬性和行為,可能同一類事物的不同個體有著行為上的差異。例如我們想用乙個類描述鳥的所有基本屬性和行為,而所有的鳥都繼承自這個類,我們可以把它稱為基類。而鳥的叫聲是有差異的,我們很難在基類中定義鳥的這個行為,這時...

物件導向 介面類 抽象類

python 沒有介面這個概念 介面類,抽象類 制定乙個規範.介面類,抽象類 python中就是一樣的 1,歸一化設計.2,制定乙個規範,凡是繼承我類的類,必須有我規定的方法.第一版class alipay def init self,money self.money money defpay se...

初探物件導向 抽象類和介面

接觸物件導向也有一段時間了,可是理解一直特別地淺。要用的時候才知道無從下手。最近又將物件導向相關的書籍看了看,一些概念比如 封裝 繼承和多型有了一些認識,但是還有一些就讓我焦頭爛額了,比如 委託。這裡我整理了一些關於抽象類和介面的知識,其中以乙個大家都非常熟悉的例子進行講解 動物 現實世界中貓和狗都...