- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
为什么抽象类不能是sealed或者static的?
我也对这个问题感到困惑 Why declare static classes as sealed and abstract in C#? .
最佳答案
static
类不能标记为sealed
,因为编译器默认将其设置为sealed
。
Static classes are sealed and therefore cannot be inherited.
static
类不能被标记为abstract
,因为它毫无意义。当您希望所有派生类都实现相同的逻辑部分时,abstract
类很有意义。但是由于无法派生 static
类,因此其他类无法实现这些差距。
They cannot inherit from any class except
Object
.
均引自 Static Classes and Static Class Members (C# Programming Guide) .
C# 规范对此更详细一些:
10.1.1.3 Static classes
A
static
class may not include asealed
orabstract
modifier. Note, however, that since astatic
class cannot be instantiated or derived from, it behaves as if it was bothsealed
andabstract
.
您可以阅读类被密封
或抽象
是什么意思:
An abstract class cannot be instantiated directly, and it is a compile-time error to use the new operator on an abstract class
The sealed modifier is used to prevent derivation from a class. A compile-time error occurs if a sealed class is specified as the base class of another class.
更新
关于您提到的查询中链接的一篇文章的词 ( Static Class Design )。它已经在该问题的已接受答案中说明。如果你仔细阅读,你会发现:
√ DO declare
static
classes assealed
,abstract
, and add aprivate
instance constructor if your programming language does not have built-in support for static classes.
.NET(C# 也是如此)确实内置了对静态类的支持,因此您不必(甚至不能)通过标记使您的类成为伪静态它既是密封的
又是抽象的
。
关于c# - 为什么抽象类不能是密封的或静态的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20965626/
当数据类扩展包含非抽象 open val 属性的密封类时,生成的子数据类包含与父类的私有(private)字段重复的私有(private)字段。 sealed class Foo(open val f
当封装一个.jar 文件(整个.jar,而不是特定的包)时,实际上封装了哪些包?它只是包含.class 文件的包,还是还包含父包和子包? 举个例子,假设我有一个包含单个 .class 文件 com.c
我可以很容易地为这样的密封案例类族一般派生一个编解码器: import io.circe._ import io.circe.generic.auto._ sealed trait Base case
我有一个类层次结构: class C1 { virtual object M1(); } class C2: C1 { override sealed object M1(); } class C3:
有什么区别: type MovieType = {| +blob?: string, +name: string, +url?: string |}; 和 type MovieType =
想象一个这样的 secret : apiVersion: v1 kind: Secret metadata: name: {{ include "test-cicd.fullname" . }}
因此,我的一位开发人员使用这样的函数为 Magento 电子商务网站制作自定义导航: getUrl() ?>">__('about') ?> 唯一的问题是它的输出如下: about 据我了解,如果同时
我是一名优秀的程序员,十分优秀!