●类(2)、接口
sealed(密封類)
???????? 修飾class,代表該類無法被繼承。
?
多態:需要通過繼承來實現。
父類的引用,只想不同子類實例的時候,都是子類的成員,因此出現,當指向不同子類對象的時候,其成員的表現也會不同,由此呈現出來的狀態,多態。
多態的分類:編譯多態(重載);運行多態(重寫)。
override
子類對父類方法的重寫。父類對應的成員函數必須是virtual,且參數相同。
父類中的成員方法:
public virtual void Eat()
{
}
子類中的成員方法:
public override void Eat()
{
}
?
VS中??? 輸入override,然后按空格鍵,之后選擇相應函數
?
?
抽象方法:
???????? 父類中必須具備且無法用具體代碼實現的方法。
???????? 特點:1、只聲明,不實現。2、加abstract關鍵詞
?
?
抽象類:
???????? 抽象類是不完整的,它只能作為基類,無法被實例化。關鍵詞是batract。
???????? 帶有抽象方法的類都是抽象類,抽象類不一定包含抽象方法。
???????? 特性:
?????????????????? 1、抽象類不能實例化。
?????????????????? 2、抽象類可以包含抽象方法和抽象訪問器。
?????????????????? 3、不能用sealed修飾符修飾抽象類,因為兩個修飾符的含義是相反的。采用sealed修飾符的類無法繼承,而abstract修飾符要求對類進行繼承。
?????????????????? 4、從抽象類派生的非抽象類必須包括繼承的所有抽象方法和抽象訪問器的實際實現。
?????????????????? 5、構造方法、靜態成員方法不能聲明為抽象方法。
?
與具體類比較:
???????? 1、抽象類不能直接實例化,并且對抽象類使用 new 運算符會導致編譯時錯誤。雖然一些變量和值在編譯時的類型可以是抽象的,但是這樣的變量和值必須或者為 null,或者含有對非抽象類的實例的引用(此非抽象類是從抽象類派生的)。
???????? 2、允許(但不要求)抽象類包含抽象成員。
???????? 3、抽象類不能被密封。
??
接口(interface):極度抽象的類
???????? 無成員變量、實例方法、實力屬性,只有抽象方法或抽象屬性。
???????? 接口中的方法,都是抽象的,因此無須加abstract。
???????? 接口中的方法,都是共有的,無須加訪問修飾符。
一個類可以實現(繼承)多個接口。
interface IUSB?? //定義抽象類
{
???????? void Strat();
???????? Void Stop();
}
class UDisk:IUSB
{
}
?
class Computer
{
???????? public void CheckUSB( IUSB usb )
???????? {
?????????????????? usb.Start();
???????? }
???????? public void CheckUSB( IUSB usb )
???????? {
?????????????????? usb.Stop();
???????? }
}
?
命名空間:對類進行分類管理的工具
?
程序集:編譯出的exe或dll文件就是程序集。
?
程序集的名字就是編譯出來的文件名
?
轉載于:https://www.cnblogs.com/phantom-k/p/4025305.html
總結
- 上一篇: LeetCode-Populating
- 下一篇: 数据仓库/集市 星形/雪花形 事实/维度