静态和密封类差异
Posted
技术标签:
【中文标题】静态和密封类差异【英文标题】:Static and Sealed class differences 【发布时间】:2013-04-19 11:58:24 【问题描述】:有没有在静态类中实现的类?意思是:
static class ABC : Anyclass
密封类和静态类都有可以继承的类吗? 意思是:
static class ABC : AClass
和
sealed class ABC : AClass
我可能在某种程度上错了吗?
【问题讨论】:
static
和sealed
真的没有任何关系
但是@ken2k,静态类在 C# 中默认是密封的。不是吗?静态类根本不参与继承。
相关帖子 - Why can't I inherit static classes?
【参考方案1】:
这可能会对您有所帮助:
+--------------+---+-------------------------+------------------+---------------------+
| Class Type | | Can inherit from others | Can be inherited | Can be instantiated |
|--------------|---|-------------------------+------------------+---------------------+
| normal | : | YES | YES | YES |
| abstract | : | YES | YES | NO |
| sealed | : | YES | NO | YES |
| static | : | NO | NO | NO |
+--------------+---+-------------------------+------------------+---------------------+
【讨论】:
太棒了。感谢@HosseinNarimaniRad 的及时回复。我早上就给你投票了,因为信息无论如何都是正确的,但这只是一个格式问题。顺便说一句,你的答案应该是从发布的那一刻起就被接受的答案,但似乎我们将不得不等待更多:) 在此基础上考虑其他类型很有趣。像一些root class
可以被继承和实例化,但不能继承。不知道为什么会有用,但仍然
static class Foo : object
有效,但本质上是static class Foo
。【参考方案2】:
简单来说
静态类
一个类可以声明为静态的,表示它只包含 静态成员。无法创建静态实例 类使用 new 关键字。静态类会自动加载 由 .NET Framework 公共语言运行时 (CLR) 当程序 或包含该类的命名空间已加载。
密封类
密封类不能用作基类。密封类是 主要用于防止衍生。因为它们永远无法使用 作为基类,一些运行时优化可以使调用密封 班级成员稍微快一点。
【讨论】:
【参考方案3】:你可以让一个sealed
类继承自另一个类,但你不能从一个sealed
类继承:
sealed class MySealedClass : BaseClass // is ok
class MyOtherClass : MySealedClass // won't compile
static
类不能从其他类继承。
【讨论】:
【参考方案4】:您可以简单地将它们区分为:
Sealed Class | Static Class
--------------------------|-------------------------
it can inherit From other | it cannot inherit From other
classes but cannot be | classes as well as cannot be
inherited | inherited
【讨论】:
【参考方案5】:简单的回答是密封类不能用作基类。
我试图告诉你密封类是下面代码中的派生类
public sealed class SealedClass : ClassBase
public override void Print()
base.Print();
另一个密封特性只能通过它的实例访问。(你不能从它继承)
class Program
static void Main(string[] args)
SealedClass objSeald = new SealedClass();
objSeald.Name = "Blah blah balh";
objSeald.Print();
【讨论】:
【参考方案6】:1 - 不,您不能实现静态类。
2 - 不,您不能从静态或密封类继承
【讨论】:
也许你可以添加一点解释。以上是关于静态和密封类差异的主要内容,如果未能解决你的问题,请参考以下文章