前面有朋友發表過一篇名為「你看不懂的抽象類和介面的區別
」的博文,我覺得作者部落格的內容沒有很好的詮釋「你看不懂的抽象類和介面的區別」這個標題。
我來說說自己的看法。
先舉個例子,以方便大家理解,然後從例子中抽象概括出結論。
比如,一家生產門的公司,需要先定義好門的模板,以便能快速生產出不同規格,功能的門。
這裡的模板通常會有兩類模板:抽象類模板和介面模板。
抽象類模板:這個模板裡面應該包含所有門都應該具有的共同屬性(如,門的形狀和顏色等)和共同行為(如,開門和關門)。
介面模板:有些門可能需要具有報警和指紋識別等功能,但這些功能又不是所有門必須具有的,所以像這樣的行為應該放在單獨的介面中(如,帶有報警功能的介面和帶有指紋識別功能的介面)。
有了上面的兩類模板,以後生產門就很方便了:利用抽象類模板和包含了報警功能的介面模板就能生產具有報警功能的門了。同理,利用抽象類模板和包含了指紋識別功能的介面模板就能生產具有指紋識別功能的門了。
結論:1.抽象類用來對自然界一些具有相似/共同性質和相似/共同行為的事物進行抽象,用乙個抽象的類來表達,從而概括出這類事物的核心性質和核心行為。注意,抽象類是對事物進行了抽象,以後想得到這類事物中的某乙個的時候,直接通過抽象類就能得到。
2.而介面用來對一些事物的相似/共同行為進行抽象,注意,介面只是對行為進行了抽象,而不關心具有該行為的事物是否屬於同一類。
有了抽象類和介面,當我們想生產出具體的某個物件時,只需要從抽象類繼承核心性質和行為,再選擇性的從不同的介面中得到一些特殊的功能。
抽象類和介面的區別
要結合來使用,從而互補長短。接下來先說說抽象類和介面的區別。區別一,兩者表達的概念不一樣。抽象類是一類事物的高度聚合,那麼對於繼承抽象類的子類來說,對於抽象類來說,屬於 是 的關係 而介面是定義行為規範,因此對於實現介面的子類來說,相對於介面來說,是 行為需要按照介面來完成 這些聽起來有些虛,舉個例...
抽象類和介面的區別
net提供了介面,這個不同於class或者struct的型別定義。介面有些情況,看似和抽象類一樣,因此有些人認為在.net可以完全用介面來替換抽象類。其實不然,介面和抽象類各有長處和缺陷,因此往往在應用當中,兩者要結合來使用,從而互補長短。接下來先說說抽象類和介面的區別。區別一,兩者表達的概念不一樣...
抽象類和介面的區別
net提供了介面,這個不同於class或者struct的型別定義。介面有些情況,看似和抽象類一樣,因此有些人認為在.net可以完全用介面來替換抽象類。其實不然,介面和抽象類各有長處和缺陷,因此往往在應用當中,兩者要結合來使用,從而互補長短。接下來先說說抽象類和介面的區別。區別一,兩者表達的概念不一樣...