標籤:color 使用 java strong 資料 on 代碼 bs c
靜態成員可以在類的執行個體之間共用,可以把它看做是類的全域變數。靜態屬性和靜態欄位可以訪問獨立於任何對象執行個體的資料,靜態方法可以執行與物件類型相關、但與類型執行個體無關的命令,在使用靜態成員時,可以不用執行個體化對象。
靜態類當我們希望類只包含靜態成員,且不能用於執行個體化對象時,一種簡單的方法是使用靜態類(如Console),而不是把建構函式設定為private。靜態類只包含靜態成員,不需要執行個體建構函式,可以有一個靜態建構函式。
介面是把特定的公用方法和屬性群組合起來,以封裝特定功能的一個集合,用於需要介面定義功能的類來實現它。介面不能單獨存在,不能執行個體化介面。介面不能包含其成員的實現代碼,只能定義成員。實現過程必須在實現介面的類中實現。
繼承C#和Java都是單繼承,被繼承的類稱為基類,衍生類別不能訪問基類的private成員,可以訪問public和protected成員。基類的成員可以是虛擬,在衍生類別中可以重寫它。類可以是密封的(sealed),密封類不能被繼承。C#中所有對象有共同的基類object
多態性同樣的指令對於不同的對象會有不同的反應,這就是多態。多態性是因為繼承產生的,繼承導致子類和父類之間有方法和屬性之間的重疊,可以使用相同的文法處理從同一基類執行個體化的對象。衍生類別執行個體的對象可以直接賦值給基類對象,不需要進行類型轉換,然後基類對象可以調用衍生類別的成員,但不能調用除子類自己定義的方法。介面也有多態性。
internal修飾的類只能在當前項目的代碼中才可以訪問它。
abstract修飾的類不能執行個體化,只能繼承。sealed修飾的類只能執行個體化,不能繼承。一個類只能有一個基類,如果繼承了抽象類別,就必須實現所繼承的所有抽象成員(除非衍生類別也是抽象的)。編譯器不允許衍生類別的可訪問性比其基類還高。abstract和sealed關鍵字不允許在介面中使用。介面沒有繼承object。
介面和抽象類別 都可以被繼承,都不能被執行個體化,但可以申明變數。衍生類別只能繼承一個抽象類別,但可以使用多個介面。抽象類別可以有抽象成員和非抽象成員(有代碼體,也可以是虛擬,這樣可以在衍生類別中重寫)。介面成員都必須在使用介面的類上實現。介面不能包含欄位、建構函式、解構函式、靜態成員或常量。
C#物件導向要點