代理:代理的本質是對另一個類中的函數的引用,可以分排和使用函數而無需知道它來自哪個類,只要函數滿足同樣的介面就可以
C#中任何事物都看作對象。
受管語言被編譯成中間低層語言,使用通用語言運時(CLR)執行編譯後的代碼,或是進一步編譯這些代碼
受管語言都是垃圾自動收集的。垃圾自動收集語言負責釋放不用的記憶體,當變數,數組或對象被檢測不再被引用,就把相應的記憶體空間釋放回系統
每個控制項基本上都被聲明為一個變數,並被添加到一個容器裡。
C#中變數和類方法可以聲明為:
Public ;可以被其他類訪問
Private:沒有聲明預設形式,只能在類內部訪問
Protected:在類和其衍生類別裡訪問
通常將所有的類變數聲明為私人的,並且編寫getxxx,setxxx訪問函數來設定和擷取資料。 實現封裝原理,盡量不要讓類中的變數在類外直接被訪問。
若干個名字相同的方法,只要這些方法有不同的調用參數,實現重載—多態
Virtual 和 override
如果基類中有一個方法,而想在衍生類別中覆蓋它,應該把基類中的方法聲明為Virtual,它的含義是,讓衍生類別裡具有同樣名字和參數標識的方法被調用,而不是調用基類中的方法。在衍生類別中必須用override關鍵字聲明該方法。
基類 |
衍生類別 |
是否出錯 |
Virtual |
override |
否,執行衍生類別的 |
無Virtual |
override |
出錯 |
Virtual |
無override |
出錯 |
無Virtual |
無override |
否,警告,執行衍生類別 |
當不能把基類方法聲明為Virtual時,另外一種取代基類中方法的方式是在衍生類別中聲明方法時使用NEW關鍵字,這樣可以有效隱藏基類中同一名稱的方法。
例如:public new void xxxx(){}
Abstract 抽象類別
1 抽象方法必須在抽象類別裡
2 抽象類別裡的方法不需要都是抽象方法,但至少要有一個抽象方法。
3 抽象類別不可以被執行個體化,只能產生衍生類別。
4 一個抽象類別的方法都是抽象方法,則該類不能被繼承,也不能繼承其他類階層。
5 介面的衍生類別必須實現介面的所有方法