【原創】C# Sealed、new、virtual、abstract、override的理解


1、sealed

密封類不能被繼承,密封方法可以重寫基類中的方法,但其本身不能在任何派生類(子類)中

進一步重寫。當應用于屬性或者方法時,sealed 修飾符必須始終和override一同使用。

通俗的說:密封類不會有子類

2、new

new關鍵字用于顯式隱藏從基類繼承的成員。在使用子類時調用的方法是new關鍵字新定義的方法,而不是基類(父類)的方法。

3、virtual

virtual 關鍵字用于修改方法或者屬性的聲明,此時,方法或者屬性被稱為虛成員,

虛成員的實現可以由派生類(子類)中的重寫成員更改。

在調用虛方法時,將為重寫成員檢查該對象的運行時類型。將調用大部分派生類(子類)中

的該重寫成員,,如果沒有派生類(子類)重寫該成員,則它可能是原始成員。

說明:

1、在靜態屬性使用virtual修飾符是錯誤的。

2、通過使用override修飾符的屬性聲明,在派生類(子類)中重寫虛擬繼承屬性。

4、abstract

抽象類 abstract可以修飾 類、 方法、屬性、索引器、事件。

在類中使用abstract修飾符,表示該類只能是其他類的基類(父類)。標記為抽象

或者包含抽象類中的成員必須通過從抽象類派生類(子類)來實現。

抽象類特征:

1、抽象類不能進行實例化

2、抽象類可以包含抽象方法抽象訪問器

3、不能用sealed修飾符修改抽象類,它倆可以理解為互逆的關系。

4、從抽象類派生的非抽象類必須包含繼承的所有抽象方法抽象訪問器的實現。

5、在方法或屬性聲明中使用abstract修飾符表示該方法或者屬性不包含實現。

抽象方法的特性:

1、抽象方法是隱式的virtual方法。

2、只允許在抽象類中聲明抽象方法。

3、抽象方法不提供實際的實現,例如:public abstract void play();

4、實現由overriding 方法提供,它是非抽象的成員。

5、抽象方法不能使用 static或 virtual修飾符。

6、在靜態屬性上使用abstract修飾符是錯誤的。

7、在派生類(子類),通過使用override修飾符的屬性聲明可以重寫抽象的繼承屬性。

5、override

使用override修飾符來修改方法、屬性、索引器或者事件,主要是提供派生類對基類方法

的新實現。從而覆蓋abstract、virtual兩種關鍵字修飾的成員。

由重寫聲明重寫的方法稱為重寫基方法。重寫基方法必須與重寫方法具有相同的簽名。

說明:

1、重寫基方法必須虛擬的、抽象的或者重寫的,不能重寫非虛方法或者靜態方法。

2、不能使用 new static、virtual和abstract修飾符修改重寫方法。

3、重寫屬性聲明必須指定與繼承屬性完全相同的訪問修飾符、類型和名稱,并且

重寫屬性必須是虛擬的、抽象的或者重寫的。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1、.java源文件: 一個以”.java“為后綴的源文件:只能有一個與文件名相同的類,可以包含其他類。 2、類方...
    Hughman閱讀 1,523評論 1 9
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,765評論 18 399
  • 1. [C#語言基礎]請簡述拆箱和裝箱。 答: 裝箱操作: 值類型隱式轉換為object類型或由此值類型實現的任何...
    胤醚貔貅閱讀 4,889評論 1 29
  • 一:java概述:1,JDK:Java Development Kit,java的開發和運行環境,java的開發工...
    ZaneInTheSun閱讀 2,688評論 0 11
  • Win7下如何打開DOS控制臺? a:開始--所有程序--附件--命令提示符 b:開始--搜索程序和文件--cmd...
    逍遙嘆6閱讀 1,614評論 4 12