c#學習筆記(三)
by heiyeluren
學習《visual c#入門經典》學習筆記
1. 類的定義和繼承
定義乙個類使用class關鍵字:
class class1
預設定義的類是只能本工程中的其他類和函式才能訪問的,我們也可以使用顯式的方式定義我們的類是私有的:
internal class class1
加入我們要讓別的工程也能夠訪問我們的類,我們就定義成公共的,別的工程也能訪問了:
public class class1
同時我們也能定義類為抽象類,只能繼承,不能例項化:
public abstract class class1
我們也能夠定義類只能例項化,不能繼承:
public sealed class class1
乙個類繼承抽象類,那麼所有抽象類的成員都將繼承,另外,相應的訪問方式必須是符合規則的,乙個公共的基類,派生類能夠是公共的,也
可以是私有的,一下定義合法:
public class mybase
internal class myclass : mybase
但是如果是個私有的基類,那麼派生類就只能是私有的,一下定義是非法的:
internal class mybase
public class myclass : mybase
如果沒有任何基類,那麼是繼承的就是基類system.object,它在c#中是很核心的基類,基本上我們所有基類的根類就是它,。
同時我們的也能夠繼承介面,對介面的成員進行實現:
public class myclass : imyinte***ce
如果乙個類繼承的是介面的成員,那麼所有介面的成員,都必須在類中進行實現,如果不想給介面的成員進行實現,可以使用「空」,就是函
數沒有任何**。
如果我們要同時繼承基類和介面,那麼基類就必須在介面前面,一下定義是非法的:
public class myclass : imyinte***ce, mybase
正確的指定介面和基類的方法如下:
public class myclass : mybase, imyinte***ce
當然,我們也能夠同時指定多個介面:
public class myclass : mybase , imyinte***ce, imysecondinte***ce
2. 介面的定義和繼承
宣告乙個介面,跟宣告乙個類差不多吧,使用inte***ce為關鍵字:
inte***ce imyinte***ce
同樣介面也有私有和公共訪問的方式:
public inte***ce imyinte***ce
但是abstract和sealed不能用,因為介面本來就是用來繼承的,但是無法例項化。
介面同樣也能繼承,而且介面不象類,只有乙個基類,介面繼承可以有多個介面:
public inte***ce imyinte***ce : imybaseinte***ce, imybaseinte***ce2
介面繼承和system.object的方式比較類似,就是通過介面的多台性來確定使用那個介面,介面不能例項化。
3. 類和介面的實現例子
// 定義介面1
public inte***ce imybaseinte***ce
// 定義介面2
internal inte***ce imybaseinte***ce2
// 同時繼承介面1和介面2
internal inte***ce imybaseface: imybaseinte***ce, imybaseinte***ce2
// 繼承基類和介面1
internal sealed class mycomplexclass : myclass, imyinte***ce
// 定義可以執行的類
class class1}}
基本上了解的就這麼多了,呵呵~~~~下次再聊點別的!!
writetime: 2004-12-29 21:00
C 學習筆記(三)
c 運算子過載 1 過載運算子的運算順序和優先順序不變,但引數和返回型別是可以重新說明的。2 c 規定,運算子中,引數說明都是內部型別的,不能過載,如 int operator int,int 3 c 還規定了 這五個運算子不能過載,也不能創造新的運算子,如 4 c 規定 這四種運算子必須為成員形式...
C 學習筆記(三)
chapter 3 函式和類的自頂向下設計 1 乙個程式的開發過程 1.問題規範 2.分析 資料需求 3.設計 初始演算法 演算法精化 4.實現 5.測試 2 重要工具 結構圖 3 分析,設計程式時,甚至對任何問題來說,我們都要由大到小,層層分解,由乙個大問題分割成多個相關 的小問題,一口乙個蛋糕是...
C 學習筆記(三)
attributes field modifiers type variable declarators 域的修飾符field modifiers可以是 靜態域和非靜態域 下面的例子清晰的反映了二者之間的區別 域的初始化 如果在類中,沒有顯式的對域進行初始化,系統將賦予其乙個預設值。域的預設初始化分...