C 介面與繼承的區別

2021-08-03 02:09:06 字數 2826 閱讀 2141

定義新的資料型別以及這些新的資料型別進行相互操作的方法

定義方式:

class

cat

class cat:object

c#中所有的類都是預設由object類派生來的,顯示指定或者省略效果是一樣的,所以上面的兩個例子是完全相同的。

c#中類包括:抽象類、密封類、非抽象類

abstract

:表示修飾的類不完整,也就是抽象類,只能用做基類。 在使用是不能直接例項化,

不能使用new運算子。

sealed

:表示修飾的類不可派生,也就是密封類。

base

:訪問最近的基類,也就是當前類繼承的類

class

cat:animal

}以上例子中base代表animal。

注意:base只能在類的內部使用。

介面乙個介面定義乙個協定。介面可以看成是特殊的抽象類,但是又有所區別。

乙個介面可以從多個基介面繼承,而乙個類或結構可以實現多個介面。

介面可以包含方法、屬性、事件和索引器。介面本身不提供它所定義的成員的實現,而抽象類中可以提供定義成員的實現。

介面只指定實現該介面的類或結構必須提供的成員。

介面本質上是一種類

不過他與類的區分還是很明顯的——不能例項化

他的精髓在於提供一些類共同的地方,而且能「多繼承」

我們知道所謂物件其實是資料和方法的封裝。介面的作用更多的是工程上的,一般上我們用他來封裝通用的行為,來達到程式的多型。

不必用object的觀點來統一介面,在我的感覺中,繼承簡化物件結構,增加**重用,介面抽象行為。

1. 介面本質上是類嗎

這個,要看你認為「類的本質是什麼」了,過多糾纏於這個說法,很容易陷入文字之爭,意義不大。

2. 介面和類有什麼區別和聯絡,主要是聯絡

區別:類的定義需要「實現」,介面的定義只需要「宣告」;

類能例項化出乙個物件,介面不能;

類只能單根繼承,介面可以多根繼承;

繼承乙個類,相當於借用了它已實現的功能,實現乙個介面,相當於對外做了乙個承諾;

……聯絡:類可以「實現」介面

3. 介面是否具備類的特徵

這要看你認為哪些是「類的特徵」,hehe,比如,「編譯後會生成乙個 .

class

檔案」算不算特徵……

4. 介面是否是object

不是。但可以用乙個介面型的變數來引用乙個物件,而且,被引用的物件,說到底,一定是乙個 object。

1、純虛類與介面不同的是,純虛類可以包含一些實現

2、用純虛類包含一些基本的功能或方法

3、用介面來定義客戶端與元件之間的通訊方法

4、虛基類的實現的變化可能會影響派生類

5、使用介面要比使用繼承具有更強的適用性

介面的一些特徵;

不可以包含任何實現;沒有構造方法;任何成員都隱式宣告為public;

介面是負責功能的定義,專案中通過介面來規範類,操作類以及抽象類的概念!

而類是負責功能的具體實現!

在類中也有抽象類的定義,抽象類與介面的區別在於:

抽象類是乙個不完全的類,類裡面有抽象的方法,屬性,也可以有具體的方法和屬性,需要進一步的專業化。

但介面是乙個行為的規範,裡面的所有東西都是抽象的!

乙個類只可以繼承乙個基類也就是父類,但可以實現多個介面

ps:介面除了規範乙個行為之外,在具體專案中的實際作用也是十分重要的,在物件導向的設計原則以及設計模式的使用中,無不體現作為乙個介面的使用好處,最直接的就是設計原則中ocp(開放封閉原則),我們使用介面,而不需要關心他的具體實現,具體實現的細節變化也無關客戶端(使用介面的類)的使用,對與擴充套件是開放的,我們可以另寫乙個介面的實現來擴充套件當前程式,而不影響上層的使用,但對修改是封閉的,即我們不能夠再去修改介面的定義,當然這個 「不能夠」是指在規範原則上不應該這麼做!

介面的使用–多型的實現:

public

inte***ce

ipolimorphism()

建立乙個class1.cs檔案,定義兩個類,擴充套件ipolimorfism:

using

system;

using

system.windows.forms;

namespace

northwind

}public

class

yello:ipolimorphism}}

另乙個mainfrm.cs檔案,應用程式入口處:

using

system;

using

system.windows.forms;

namespace

northwind}}

舉個例子,有乙個老漢,做了乙個麵餅,給了他的幾個兒子,老大用這個餅,加上點餡,包一下,做成了包子,老二用這個麵餅,在外面刷上油,撒上料,烤一烤,做成了土家燒餅,老三呢,胡亂做,在餅上抹上亂七八糟的東西,烤一烤,做成了披薩餅.基類和派生類的關係就是這樣,基類提供了基本的實現,派生類就在上面添料,最終就成了每個人心中想要的餅.

那介面的故事則不一樣,老漢沒有給眾人面,老漢這回給兒子們畫了乙個餅的設計圖,規定了這個餅的厚度,直徑等等,然後把這個規格表發給兒子們了,兒子們拿著畫的餅,各自按自己的想法去做了.

兩個故事的區別告訴我們,介面是一種規格,是乙個統一的標準,在實際應用中,介面有兩方法的作用.

1,通過介面更容易表現設計,更容易溝通,而且介面是沒有實現**的,因此,定好介面,再寫實現**,就算設計上有變動,也可以通過介面輕易實現修改.而如果不用介面的話,你將直接去寫類,好不容易實現了乙個類的**,如果設計上有少許的變動,就要去改**.

2.介面是寫類的實現者看的,這好比建築圖紙是畫給施工工人看的.

繼承與介面的區別

一.語法層次上 如上所述。二.設計層次上 1 抽象層次不同。抽象類是對類抽象,而介面是對行為的抽象。抽象類是對整個類整體進行抽象,包括屬性 行為,但是介面卻是對類區域性 行為 進行抽象。2 跨域不同。抽象類所跨域的是具有相似特點的類,而介面卻可以跨域不同的類。我們知道抽象類是從子類中發現公共部分,然...

繼承與介面的區別

類繼承 子類完全繼承父類特點 抽象類繼承 繼承時抽象的部分不同的子類可以有不同的實現 介面繼承 所有成員在子類都可以有不同的實現 至於為什麼要用介面而不是抽象類 這要看二者適用的情況 當個性大於共性時,適合介面,如鳥和飛機,適合抽象出乙個飛的介面 當共性大於個性時,適合抽象類,如老鷹和麻雀,適合抽象...

C 繼承與介面

繼承的使用首先是為了簡化我們的程式,避免同一性質的資料浪費過多的記憶體空間,同時也是為了更好的維護,就是當我們只想改變乙個類中的資料時,就可以改變所有用到這個類的資料了。繼承的使用是以類而言的,通過繼承關係,乙個類可以繼承該基類所有成員資料和方法函式,當然該類也可以重新修改自己所繼承的基類的方法等。...