1. 程式人生 > >《C#入門經典(第6版)》學習筆記_第10章_定義類成員

《C#入門經典(第6版)》學習筆記_第10章_定義類成員

第10章 定義類成員

本章內容:  如何定義類成員  如何使用類圖新增成員  如何控制類成員的繼承  如何定義巢狀的類  如何實現介面  如何使用部分類定義  如何使用Call Hierarchy視窗

10.1 成員定義 在類定義中,也提供了該類中所有成員的定義,包括欄位、方法和屬性。 所有成員都有自己的訪問級別,用下面的關鍵字之一來定義:  public——成員可以由任何程式碼訪問。  private——成員只能由類中的程式碼訪問(如果沒有使用任何關鍵字,就預設使用這個關鍵字)。  internal——成員只能由定義它的程式集(專案)內部的程式碼訪問。  protected——成員只能由類或派生類中的程式碼訪問。 後兩個關鍵字可以結合使用,所以也有protected internal成員。它們只能由程式集(專案)中派生類的程式碼來訪問。 也可以使用關鍵字static來宣告欄位、方法和屬性,這表示它們是類的靜態成員,而不是物件例項的成員。

10.1.1 定義欄位 用標準的變數宣告格式(可以進行初始化)和前面介紹的修飾符來定義欄位,例如: public int MyInt; 使用標準的變數宣告格式和修飾符來定義欄位。 public readonly int MyInt=17; 使用關鍵字readonly,表示這個欄位只能在執行建構函式的過程中賦值,或由初始化賦值語句賦值。 public static int MyInt; 使用static關鍵字將欄位宣告為靜態。 靜態欄位必須通過定義它們的類來訪問,而不是通過這個類的物件例項來訪問。 另外,可以使用關鍵字const來建立一個常量。按照定義,const成員也是靜態的,所以不需要使用static修飾符,如果使用static修飾符,則會產生一個錯誤。

10.1.2定義方法 方法使用標準函式格式、可訪問性和可選的static修飾符來宣告。 靜態方法必須通過定義它們的類來訪問,而不是通過這個類的物件例項來訪問。 也可以在方法定義中使用下述關鍵字:  virtual——方法可以重寫。  abstract——方法必須在非抽象的派生類中重寫(只用於抽象類中)。  override——方法重寫了一個基類方法(如果方法被重寫,就必須使用該關鍵字)。  extern——方法定義放在其他地方。 如果使用了override,也可以使用sealed來指定在派生類中不能對這個方法做進一步的修改,即這個方法不能由派生類重寫。 使用extern可以在專案外部提供方法的實現程式碼。

10.1.3 定義屬性 屬性定義方式與欄位類似,但包含的內容比較多,比欄位複雜,因為它們在修改狀態前還可以執行一些額外操作,實際上,它們可能並不修改狀態。 屬性擁有兩個類似於函式的塊,一個塊用於獲取屬性的值,另一個塊用於設定屬性的值。這兩個塊也稱為訪問器,分別用get和set關鍵字來定義,可以用於控制屬性的訪問級別。可以忽略其中的一個塊來建立只讀或只寫屬性。當然,這僅適用於外部程式碼,因為類中的其他程式碼可以訪問這些程式碼塊能訪問的資料。還可以在訪問器上包含可訪問修飾符,例如使get塊變成公共的,使set塊變成受保護的。至少包含其中一個塊,屬性才是有效的(既不能讀取也不能修改的屬性沒有任何用處)。