接口與抽象類區別
阿新 • • 發佈:2018-02-23
根據 多個 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,可以根據需要加訪問修飾符。
一筆帶過:委托跟接口的區別就是,委托只能包含屬性,索引,方法,而不能包含事件。
接口與抽象類區別