《C#與.NET3.0高級程序設計》讀書筆記(二)

C#筆記第四章“C#2.0面向對象編程”

一:C#類類型
    1、如果要用過new someClass()來創建新對象,必須重定義默認構造函數
    2、僅僅返回類型不同不能重載
    3、this關鍵字可以用來轉發構造函數調用
二、oop三大支柱:封裝,繼承,多態。繼承有is-a和has-a的關係,多態靠虛擬和抽象來支持。

三:C#封裝支持。
    1:傳統訪問方法和修改方法
    2:類屬性,其中value代表賦值號郵編的數據,數據類型取決於代表的實際種類。
       value不是關鍵字。而是“上下文關鍵字”。
       對屬性可以使用C#的內建運算符(++)。
       屬性在內部實際轉換成set_XXX和get_XXX,因此自己不能再定義這種的函數了。
       只讀只寫屬性,屬性的get、set也可以設定可見性級別。
       存在“靜態屬性”

四:C#的繼承支持
    1:is-a模型
        a:每個子類應該顯示調用一個合適的積累構造函數,可以使用關鍵字base。
        b:C#不允許多繼承的出現。
        c:使用sealed關鍵字來密封類,不讓它被繼承。
    2:has-a模型(包含/委託)
    3:嵌套類型
        公共嵌套類型可以被任何人調用,私有嵌套類型只能被包含類的成員使用。嵌套類一般用來對外部類起輔助作用,而不是爲了給外部世界使用。在外部使用時要使用包含類型的作用域來限定它。

五:C#的多態支持
    1:virtual和override關鍵字
        如果基類想定義一個可以被子類重寫的方法,它必須指定方法是虛的,可以定義該方法的一個默認實現。
    2:sealed關鍵字也可以用到類型成員上,以防止虛成員將類被繼承類型所重寫。起到只密封一些方法或屬性的作用。(用在非虛方法上應該沒有意義,或者錯誤?)
    3:抽象類。
        a:不想某個類被創建實例的時候用。使用abstract關鍵字。
        b:強制多態。基類定義抽象方法,子類必須實現。抽象方法不包含默認的實現。
        c:抽象方法只能用在抽象類中。子類如果不實現抽象方法,也必須聲明用abstract修飾。
    4:成員隱藏。如果一個派生類重定義了一個繼承自基類的相同的成員,派生類就隱藏了父成員。這時編譯器會報警,解決辦法一是採用virtual和override,另一種是在子類類型前加上new,明確指定就是要隱藏父類的版本。可以隱藏的包括任何基類成員類型。但是使用強制類型轉換仍然可以調用一個已隱藏的基類實現。

六:C#的類型轉換規則
    1:當兩個類之間是is-a關係時,將派生類型存儲在基類引用中總是安全的。這是“隱式類型轉換”。小類型到大類型。
    2:“顯示類型轉換”,大類型到小類型,使用前最好先用is判斷下。

七:分部類型
    使用關鍵字partial。

八:XML註釋
    這是一個大問題。GhostDoc可以自動生成部分xml註釋,NDoc可以提取XML註釋成幫助文檔。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章