c 基礎加強 多型II 介面

2021-06-05 18:13:21 字數 1267 閱讀 4579

介面的定義:把公共例項(非靜態)方法和屬性組合起來,以封裝特定功能的乙個集合。

介面的成員只能包含:方法、屬性、索引、事件宣告。

介面的成員沒有訪問修飾符。

注意:介面不能單獨存在,不能像例項化乙個類那樣例項化介面;介面不能包含實現其成員的任何**,而只是定義成員本身;實現過程由實現介面的類來完成。

介面的名稱一般以大寫字母i開頭。

乙個類可以支援多個介面。

介面與抽象類之間的共同點:

抽象類和介面都包含可以由派生類繼承的成員。

介面和抽象類都不能直接例項化,但可以宣告這些型別的變數。

介面和抽象類之間的區別:

派生類只能繼承乙個基類,即只能直接繼承乙個抽象類(但可以用乙個繼承鏈包含多個抽象類)。相反,類可以使用任意多個介面。

如:class 類名:object ,inte***ce[,...] 類如果有父類,則先寫父類名,再寫介面名。除非沒有父類,則只有介面名。

抽象類可以擁有抽象成員(沒有**體,且必須在派生類中實現,除非繼承類為抽象類)和非抽象成員(他們擁有**體,也可以是虛擬的,這樣就可以在派生類中重寫)

介面成員必須都在使用介面的類上實現--他們沒有**體。

介面成員都是公共的,但抽象類的成員可以使私有的(只要他們不是抽象的)、受保護的、內部的或受保護的內部成員(其中受保護的內部成員只能在應用程式的**或者派生類中訪問)。

此外,介面中不能包含字段、建構函式、析構函式、靜態成員或變數。

顯示實現介面:

inte***ce ijiekou //定義介面

class myclass1:ijiekou

} class myclass2:ijiekou

} 介面的使用:

myclass myclass1 = new myclass1();

myclass1.func();

ijiekou ijiekou = myclass1;

ijiekou.func();

console.writeline();

myclass2 myclass2 = new myclass2();

//此時用myclass2 是沒有辦法訪問到 func()方法。

ijiekou = myclass2;

ijiekou.func();

console.readkey();

//在il**中,顯示實現的介面方法,是私有的。

//實現方法:介面名.方法名()。

c 基礎加強 多型I

一 隱藏基類方法 new class mybase class mysub mybase 二 重寫基類方法 virtual override 將父類方法標記為virtual,表示可以被重寫 將子類方法標記為override,表示為重寫基類方法 class usblei class usb燈 usbl...

c 基礎加強

反編譯工具.netreflector7.0 dotnetfx.exe包含 net 基類庫,在客戶機器上簡便安裝 net環境 1 多個建構函式了,可以通過 this 繼承省略一些 2 c 有5 種訪問修飾符 private 當前類內部訪問 protected 當前類內部以及當前類的子類內部訪問。int...

c 多型與介面

靜態聯編 static binding 在編譯階段,確定函式的跳轉位址.早期聯編.動態聯編 dynamic binding 在執行階段,根據指向的物件,動態地確定跳轉位址.晚期聯編.include using namespace std class animal 介面 純虛函式 純虛函式主要用來實現...