[英]Why can't we use access modifiers and static keyword for creating an object in C#?
[英]Why is the sealed keyword not included in the list of access modifiers?
我認為sealed
應該包含在C#語言的訪問修飾符列表中。 有人可以說出它被排除在外的原因嗎?
它不是一個訪問修飾符,它與是否可以繼承一個類有關...
如果你不能從一個類派生它並不意味着你無法訪問它。
訪問修飾符定義誰可以訪問方法或類,以及何時 (即: private
:只有類成員, public
:其他人等)。 將方法或類標記為已sealed
意味着它不能被繼承。 它沒有說明訪問本身。
正確地說:如果使用sealed
關鍵字,則仍需要添加訪問修飾符(除非默認訪問修飾符適合您)。
您的困惑可能與兩個關鍵字似乎都與保護級別有關。 這是真的,但我們沒有保護修飾符的概念。 sealed
關鍵字稱為sealed修飾符 ,因為它修改了要封閉的類或方法。 這就像一個布爾開關:一個類或方法要么是密封的,要么是密封的,不管它的訪問修飾符如何。
為了增加混淆,存在密封訪問器 ,這意味着不允許派生訪問器(gettor / settor)(C#標准10.7.5)。
以下所有有效類定義都具有sealed
類,但它們都具有不同的訪問級別,因此您可以看到sealed
不是訪問修飾符,因此未被Microsoft列為一個:
public sealed class MyPublicClass
{
}
internal sealed class MyInternalClass
{
}
private sealed class MyPrivateClass
{
}
你必須相信微軟對他們創建的語言知道一兩件事:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.