介面
1.介面是乙個用來定義程式的協議,它描述可屬於任何類或結構的一組相關行為。介面可由方法、屬性、事件和索引器或這4種成員型別的任何組合構成,但不能包含字段。
介面具有以下特徵:
a).介面類似於抽象基類:繼承介面的任何非抽象型別都必須實現介面的所有成員。
b).不能直接例項化介面。
c).介面可以包含事件、索引器、方法和屬性。
d).介面不包含方法的實現。
e).類和結構可從多個介面繼承。
f).介面自身可從多個介面繼承。
修飾符 inte***ce 介面名稱 : 繼承的介面列表
說明:a).宣告介面時,除inte***ce關鍵字和介面名稱外,其他的都是可選項。
b).可以使用new、public、protected、internal和private等修飾符宣告介面,但介面成員必須是公共的。
2.介面的實現與繼承
inte***ce ipeople
}calss program : ipeople
set}
}ipeople ipeople = new program();
ipeople.name = 「tom」;
3.顯式介面成員實現
inte***ce imyinte***ce1
inte***ce imyinte***ce2
calss myclass: imyinte***ce1, imyinte***ce2
int imyinte***ce2.add()
}myclass myclass = new myclass();
imyinte***ce1 imyinte***ce1 = myclass;
console.writeline(imyinte***ce1.add());
注:a).顯式介面成員實現中不能包含訪問修飾符、abstract、virtual、override或static修飾符。
b).顯式介面成員屬於介面的成員,而不是類的成員,因此,不能使用類物件直接訪問,只能通過介面物件來訪問。
抽象類與抽象方法
1.抽象類主要用來提供多個派生類可共享的基類的公共定義,它與非抽象類的主要區別:
a).抽象類不能直接例項化。
b).抽象類中可以包含抽象成員,但非抽象類中不可以。
c).抽象類不能被密封。
訪問修飾符 abstract class 類名:基類或介面
說明:宣告抽象類時,除abstract關鍵字、class關鍵字和類名外,其他的都是可選項。
2.抽象方法概述及宣告
抽象方法就是在宣告方法時,加上abstract關鍵字,宣告抽象方法時需要注意以下兩點:
a).抽象方法必須宣告在抽象類中。
b).宣告抽象方法時,不能使用virtual、static和private修飾符。
public abstract class myclass
3.抽象類與介面
抽象類和介面的區別主要有以下幾點:
a).它們的派生類只能繼承乙個基類,即只能直接繼承乙個抽象類,但可以繼承任意多個介面。
b).抽象類中可以定義成員的實現,但介面中不可以。
c).抽象類中可以包含字段、建構函式、析構函式、靜態成員或常量等,介面中不可以。
d).抽象類中的成員可以是私有的(只要它們不是抽象的)、受保護的、內部的或受保護的內部成員,但介面中的成員必須是公共的。
注:抽象類和介面這兩種型別用於完全不同的目的。抽象類主要用作物件系列的基類,共享某些主要特性,例如共同的目的和結構。介面則主要用於類,這些類在基礎水平上有所不同,但仍可以完成某些相同的任務。
密封類與密封方法
1.c#中使用密封類時,如果類滿足如下條件,則應將其密封:
a).類是靜態類。
b).類包含帶有安全敏感資訊的繼承的受保護成員。
c).類繼承多個虛成員,並且密封每個成員的開發和測試開銷明顯大於密封整個類。
d).類是乙個要求使用反射進行快速搜尋的屬性。密封屬性可提高反射在檢索屬性時的效能。
訪問修飾符 sealed class 類名:基類或介面
說明:a).密封類不能作為基類被繼承,但它可以繼承別的類或介面。
b).在密封類中不能宣告受保護成員或虛成員,因為受保護成員只能從派生類進行訪問,而虛成員只能在派生類中重寫。
c).由於密封類的不可繼承性,因此密封類不能宣告為抽象的,即sealed修飾符不能與abstract修飾符同時使用。
《c#從入門到精通》讀後總結
介面和抽象類
介面和抽象類 今天自學了一下介面,從第一次接觸介面又進一步理解介面的原理。想到介面或許我們更多的是想到和類的對比,而類中抽象類和介面又更為相似。現在我講下我對介面和抽象類的理解。如果單從具體 來看,對這兩個概念很容易模糊,甚至覺得介面就是多餘的,因為單從具體功能來看,除多重繼承外 c 抽象類似乎完全...
抽象類和介面
抽象類 1.是一種特殊的類,除了不能被例項化外,具有類得其他特性.2.抽象類的方法可以不宣告為abstract,此時可以實現方法提 如果宣告為abstract,則不可以實現方法體,只能宣告,如 public abstract int remove int i,int j 此時類必須宣告為抽象 3.乙...
抽象類和介面
1.抽象類 含有abstract修飾符的類即為抽象類。可用於實現 重用。抽象類與普通類的唯一區別 不能建立例項物件 允許有抽象方法,但不必須是抽象的。抽象類中定義的抽象方法必須在具體子類中實現,所以不能有抽象構造方法或抽象靜態方法 如果沒有全部實現抽象父類的抽象方法,子類也要定義為抽象型別。2.介面...