C#용 봉인된 한정자
3880 단어 csharp
sealed
(密封)修飾詞,它的定義很簡單,當你將 sealed
應用到類別時, sealed
修飾詞會防止其他類別繼承該類別,該類別則可繼承其它非 sealed
의제예
Manager
類別사용 sealed
修飾詞, Manager
類別可繼承 Employee
類別, Employee
類別不可繼承 Manager
,當然,任何類別都不可繼承 Manager
class Employee { }
sealed class Manager : Employee { }
所以사용
sealed
修飾詞的類別不會有子類別,也不適合作為父類別使用,該類別也不可為抽象類別,因為 abstract
類別提供可實作的方法或屬性,其他子類別必須繼承 abstract
類別進行實作,所以當你將 sealed
와 abstract
一起使用時會產生錯誤上圖錯誤清楚表示抽象類型不可以是密封或是靜態
sealed
也可以使用在可覆寫父類別中的虛擬方法或屬性,該類別允許其他類別繼承,但可防止他們覆寫特定的虛擬方法或屬性class X
{
protected virtual void M1() { }
protected virtual void M2() { }
}
class Y : X
{
// sealed 可使用於可覆寫方法
protected sealed override void M1() { }
protected override void M2() { }
}
class Z : Y
{
// 此時無法覆寫密封方法
//protected override void M1() { }
protected override void M2() { }
}
由於
Y
類別覆寫了 M1
方法並設置為 sealed
,所以當 Z
類別繼承 Y
類別時, Z
類別將無法覆寫 M1
方法,如果強制覆寫則會產生錯誤需要特別注意的地方:不是所有方法都可做為密封方法,要作為密封方法的話,必須覆寫父類別的虛擬方法並實作該方法,所以在密封方法,所以在密封7 | 와
sealed
修飾詞會同時使用참조
sealed
글 읽어주셔서 감사합니다 🌷 🌻 🌼
마음에 드셨다면 주저말고 하트 꾸욱 눌러주세요❤️
또는 내 GitHub ⭐
또는 커피를 사주세요 ⬇️ 감사합니다.
Reference
이 문제에 관하여(C#용 봉인된 한정자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/fakestandard/sealed-modifier-for-c-22l9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)