ano*_*ani 5 c# abstract-class sealed static-classes
为什么抽象类不能密封或静态?我也对此问题感到困惑为什么在C#中将静态类声明为密封和抽象?
Mar*_*zek 13
staticclass无法标记,sealed因为它是sealed由编译器默认生成的.
静态类是密封的,因此不能继承.
static类不能被标记为abstract,因为它会毫无意义.abstract当您希望所有派生类实现逻辑的相同部分时,class才有意义.但由于static无法导出类,因此其他类无法实现这些空白.
他们不能继承任何类,除了
Object.
这两个引用来自静态类和静态类成员(C#编程指南).
C#规范更详细一点:
10.1.1.3静态类
甲
static类可以不包括sealed或abstract改性剂.但请注意,既然一个static类不能被实例化或衍生,它的行为就好像它是两个sealed和abstract.
你可以阅读课程的意义sealed或abstract:
抽象类不能直接实例化,在抽象类上使用new运算符是编译时错误
sealed修饰符用于防止从类派生.如果将密封类指定为另一个类的基类,则会发生编译时错误.
更新
关于在您提到的查询中链接的文章(静态类设计).已经在该问题的接受答案中说明了这一点.如果你仔细阅读,你会看到:
√ DO声明
static类作为sealed,abstract并添加一个private构造函数,如果你的编程语言不具有内置静态类的支持.
.NET(所以C#以及)都已经内置了对静态类的支持,所以您不必(甚至不可能),使你的类伪静态通过标记它都sealed和abstract.
| 归档时间: |
|
| 查看次数: |
11497 次 |
| 最近记录: |