l索引器提供了一種訪問類或結構的方法,即允許按照與數組相同的方式對類、結構或接口進行索引。
lpublic int this[int index] //索引器聲明
l {
l // get和set訪問器
l }
l委託對象封裝多個方法
l 委託對象可以封裝多個方法,這些方法的集合稱爲調用列表。委託使用“+”、“-”、“+=”和“-=”等運算符向調用列表中增加或移除事件處理方法。
lC#中只允許單繼承,即一個派生類只能有一個基類。
lC#中繼承是可傳遞的,如果C從B派生,B從A派生,那麼C不僅繼承B的成員,還繼承A的成員。
lC#中派生類可添加新成員,但不能刪除基類的成員。
lC#中派生類不能繼承基類的構造函數和析構函數,但能繼承基類的屬性。
lC#中派生類可隱藏基類的同名成員,如果在派生類可以隱藏了基類的同名成員,基類該成員在派生類中就不能被直接訪問,只能通過“base.基類方法名”來訪問。
lC#中派生類對象也是基類的對象,但基類對象卻不一定是基派生類的對象。也就是說,基類的引用變量可以引用基派生類對象,而派生類的引用變量不可以引用基類對象。
多態性
l方法1:在使用新的派生方法替換基方法時應使用new關鍵字。
lclass A
l{ public void fun()
l {
l Console.WriteLine("A");
l }
l}
lclass B:A
l{ new public void fun()//隱藏基類方法fun
l {
l Console.WriteLine("B");
l }
l}
lvirtual關鍵字
lvirtual關鍵字用於修飾方法、屬性、索引器或事件聲明,並且允許在派生類中重寫這些對象。
l注意:不能重寫非虛方法或靜態方法。重寫的基方法必須是virtual、abstract或override的。
l在類聲明中使用abstract修飾符的類稱爲抽象類。抽象類具有以下特點:
l抽象類不能實例化。
l抽象類可以包含抽象方法和抽象訪問器。
l抽象類中可以存在非抽象的方法。
l 不能用sealed修飾符修改抽象類,這也意味着抽象類能被繼承。
l從抽象類派生的非抽象類必須包括繼承的所有抽象方法和抽象訪問器的實現。
l抽象類可以被抽象類所繼承,結果仍是抽象類。
l接口只包含成員定義,不包含成員的實現,成員的實現需要在繼承的類或者結構中實現。接口的成員包括方法、屬性、索引器和事件,但接口不包含字段。
l[接口修飾符] interface
接口名[:父接口列表]
l {
l //接口成員定義體
l }
l當一個類實現一個接口時,這個類就必須實現整個接口,而不能選擇實現接口的某一部分。
l一個接口可以由多個類來實現,而在一個類中也可以實現一個或多個接口。
l 一個類可以繼承一個基類,並同時實現一個或多個接口。
l1. 隱式實現接口成員
l若要隱式實現接口成員,類中的對應成員必須是公共的、非靜態的,並且與接口成員具有相同的名稱和簽名。
l2. 顯式實現接口成員
l顯式接口成員實現不能使用任何修飾符。