1. 程式人生 > >接口與抽象類區別

接口與抽象類區別

根據 多個 ima 繼承關系 style 訪問 interface 修飾符 子類

抽象類:往往用來表征我們對問題領域進行分析、設計中得出的抽象概念,是對一系列看上去不同,但本質上相同的具體概念的抽象。(面向對象的概念中,所有的對象都是通過類來描繪的。但是,並不是所有的類都是用來描繪對象的,如果一個類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類)

作用:主要用來進行類型隱藏。

接口的定義跟抽象類相似,也可以說接口就是一個特殊的抽象類。

它們的區別:

1、abstract class在C#中表示的是一種繼承關系,一個類只能使用一次繼承關系。但是一個類卻可以實現多個interface。

2、在abstract class中可以有自己的數據成員,也可以有非abstract的成員方法,而在interface中,可以定義方法、屬性、索引和事件,所有的成員方法都是abstract的。

3、abstract class和interface所反映出的設計理念不同。其實abstract class表示的是‘is-a’關系,interface表示的是‘like-a’。

4、實現抽象類和接口的類必須實現其中的所有方法。抽象類中可以有非抽象方法。接口中不能有實現方法。

5、抽象類中的變量默認是private型,其值可以在子類中重新定義,也可以重新賦值。

6、接口中的方法默認都是public,abstract類型的,並且不允許成員加任何訪問修飾符。

abstract class 成員的默認訪問修飾是什麽:

技術分享圖片

技術分享圖片

很明顯,方法默認的修飾是private,可以根據需要加訪問修飾符。

一筆帶過:委托跟接口的區別就是,委托只能包含屬性,索引,方法,而不能包含事件。

接口與抽象類區別