sealed、new、virtual、abstract與override 總結

來源:互聯網
上載者:User

1. sealed——“斷子絕孫”


密封類不能被繼承。密封方法可以重寫基類中的方法,但其本身不能在任何衍生類別中進一步重寫。當應用於方法或屬性時,sealed修飾符必須始終與override一起使用。

即:密封類不會有子類,所以是“斷子絕孫”。

2. new——“你是我的,我是我的”


new關鍵字用於顯式隱藏從基類繼承的成員。也就是在使用衍生類別時調用的方式方法是new關鍵字新定義出來的方法,而不是基類的方法。


在不使用new修飾符的情況下隱藏成員是允許的,但會產生警告。使用new顯式隱藏成員會取消此警告,並使用衍生類別新定義的方法。

即:好比是不用祖宗的東西,而是用自己創造(new)的東西。

3. virtual——“為了子孫後代”


virtual關鍵字用於修改方法或屬性的聲明,在這種情況下,方法或屬性被稱做虛成員。虛成員的實現可由衍生類別中的重寫成員更改。


調用虛方法時,將為重寫成員檢查該對象的運行時類型。將調用大部指派生類中的該重寫成員,如果沒有衍生類別重寫該成員,則它可能是原始成員。

在預設情況下,方式是非虛擬。非虛方法不能重寫。


不能將virtual修飾符與一下修飾符一起使用:static、abstract和override。

除了聲明和調用文法不同外,虛擬屬性的行為與抽象方法一樣。


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


通過override修飾符的屬性聲明,在衍生類別中重寫虛擬繼承屬性。

即:virtual是為了讓子孫後代可以實現各自的夢想而做的。

4. abstract——“我是上帝”

abstract修飾符可以和類、方法、屬性、索引器及事件一起使用。


在類聲明中使用abstract修飾符,以指示該類只能是其他類的基類。標記為抽象或包含在抽象類別中的成員必須通過從抽象類別派生的類來實現。

抽象類別具有以下特性:

抽象類別不能執行個體化。

抽象類別可以包含抽象方法和抽象訪問器。


不能用sealed修飾符修改抽象類別,這意味著該類不能被繼承。

從抽象類別派生的非抽象類別必須包括繼承的所有抽象方法和抽象訪問器的實現。

在方法或屬性聲明中使用abstract修飾符以指示此方法或屬性不包含實現。

抽象方法具有以下特性:


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


只允許在抽象類別使用抽象方法聲明。


抽象方法聲明不提供實際的實現,所以沒有方法體;方法聲明只是以一個分號結束,並且在結束後沒有花括弧。


實現由override方法提供,它是非抽象類別的成員。


在抽象方法聲明中使用static或virtual修飾符是錯誤的。


除了在聲明和調用文法上不同外,抽象屬性的行為與抽象方法一樣。


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


在衍生類別中,通過包括使用override修飾符的屬性聲明可以重寫抽象的基礎屬性。

即:abstract是一種抽象,好比上帝,是人們對神的抽象,看似什麼都能幹,其實什麼都幹不了。

5. override——“一手遮天”


使用override修飾符來修改方法、屬性、索引器或事件。主要是提供衍生類別對基類方法的新實現。覆蓋上面abstract、virtual兩種關鍵字修飾的成員。

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

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


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


重寫屬性聲明必須指定與繼承屬性完全相同的存取修飾詞、類型和名稱,並且重寫屬性必須是虛擬、抽象的或重寫的。

即:override好比不但不用祖宗的那套,而且還自己創一套新功夫代替祖宗那套。

new和override的區別如下:


用override的基類方法必須要用virtual,而new不必要。


用一個基類的對象調用基類的virtual方法時,override重寫的衍生類別的方法會被訪問,而new重寫的衍生類別中的方法不會被訪問。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.