我认为sealed
应该包含在 C# 语言的访问修饰符列表中。有人能说出它被排除在外的原因吗?
问问题
1708 次
4 回答
10
它不是访问修饰符,它与是否可以继承一个类有关......
于 2010-08-18T10:38:22.220 回答
6
因为如果你不能从一个类派生它并不意味着你不能访问它。
于 2010-08-18T10:39:04.393 回答
6
访问修饰符定义了谁可以访问方法或类,以及何时访问(即private
:仅类成员,public
:其他所有人等)。将方法或类标记为sealed
意味着它不能被继承。它没有说明访问本身。
正确地说:如果您使用关键字,您仍然需要添加访问修饰符sealed
(除非默认访问修饰符适合您)。
您的困惑可能是这两个关键字似乎都与保护级别有关。这是真的,但我们没有保护修饰符的概念。该sealed
关键字称为sealed 修饰符,因为它修改了要密封的类或方法。这就像一个布尔开关:一个类或方法要么是密封的,要么不是,不管它的访问修饰符如何。
更令人困惑的是,存在密封访问器,这意味着不允许派生访问器(gettor/settor)(C# 标准 10.7.5)。
于 2010-08-18T10:43:44.990 回答
1
以下所有有效的类定义都是特征sealed
类,但它们都具有不同的访问级别,因此您可以看到它sealed
不是访问修饰符,因此 Microsoft 未将其列为一个:
public sealed class MyPublicClass
{
}
internal sealed class MyInternalClass
{
}
private sealed class MyPrivateClass
{
}
您必须相信微软确实对他们创建的语言了解一两件事:)
于 2010-08-18T10:51:56.440 回答