C#物件導向程式設計(七){功能型修飾詞<上>}

繼前篇的存取類的修飾詞之後,還有一些功能型的描述修飾詞,包含之前也已經看到過的 new 以及很常看到的 static 在內,還有十來個字詞,分成兩篇來整理。
c#

abstract 表示某一類別只是要做為其他類別的基底類別。
async 指出修改的方法、Lambda 運算式或匿名方法為非同步。
const 指定無法修改欄位值或區域變數值。
event 宣告事件。
extern 表示方法於外部實作。
new 明確隱藏繼承自基底類別的成員。
override 提供繼承自基底類別之虛擬成員的新實作。
Partial 定義同一組件內的部分類別、結構和方法。
readonly 宣告欄位只能做為宣告的一部分或在相同類別的建構函式中擁有指派的值。
sealed 指定不能繼承類別。
static 宣告成員,該成員屬於類型本身而不是屬於特定物件。
unsafe 宣告 unsafe 內容。
virtual 宣告方法或存取子的實作可藉由覆寫衍生類別中的成員變更。
volatile 表示欄位可以在程式中藉由像是作業系統、硬體或是同時執行的執行緒進行修改。
  • abstractoverride
    表示某一類別只是要作為其他類別的基底類別,由衍生自抽象類別的類別去實作。實作方式:繼承 abstract class 後,使用override 覆寫重新定義方法; 覆寫基底方法必須是 virtualabstractoverride
    override 宣告不能變更 virtual 方法的存取範圍。 override 方法和 virtual 方法都必須具有相同的存取層級
    以下例子就是一個帶有基本傷害數值的抽象類別的實作。

    抽象類別無法具現化(無法使用new將其實體)。
    抽象類別可能包含抽象方法和抽象存取子。
  • const
    常數可以是數值、布林值、字串或 null,是一個不會被改變的值。

    例如:數學式中的 PI
  • virtual
    用來修改方法、屬性、索引子或事件宣告,並可在衍生類別中受到覆寫。

     
  • sealed
    用於類別時可以防止其他類別繼承。或防止方法透過繼承被覆寫。

     
  • static
    可用於類別、方法、屬性、運算子、事件和建構函式,但不能與索引子、解構函式或類別以外的類型搭配。

    要取得 life 靜態成員必須使用 ClassA.Cat.life 才能訪問。

    若不將值明確指派給靜態欄位,不會定義結果
  • new
    new 做為宣告修飾詞時,會隱藏繼承自基底類別的成員。
    雖然可以在不使用 new 修飾詞的情況下隱藏成員,但是編譯器會發出警告。 如果您使用 new 明確隱藏成員,它會隱藏這個警告。

     

Leave a Reply