静态和密封的类差异

时间:2013-04-25 14:22:05

标签: c# .net oop static sealed

  1. 是否有任何类在静态类中实现?意思是:

    static class ABC : Anyclass
    
  2. 是否有任何类可以在密封类和静态类中继承? 意思是:

    static class ABC : AClass {}
    

    sealed class ABC : AClass {}
    
  3. 我可能在某种程度上是错的吗?

7 个答案:

答案 0 :(得分:609)

这可能会对您有所帮助:

+--------------+---+-------------------------+------------------+---------------------+
|  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          |
+--------------+---+-------------------------+------------------+---------------------+

答案 1 :(得分:37)

简单来说就是

静态类

  

一个类可以声明为static,表示它只包含   静态成员。无法创建静态实例   使用new关键字的类。静态类会自动加载   由.NET Framework公共语言运行时(CLR)实现的程序   或者加载了包含该类的命名空间。

密封类

  

密封类不能用作基类。密封课程   主要用于防止推导。因为它们永远不会被使用   作为基类,一些运行时优化可以使调用密封   班级成员略快。

答案 2 :(得分:18)

您可以让sealed类从其他类继承,但不能从 sealed类继承

sealed class MySealedClass : BaseClass // is ok
class MyOtherClass : MySealedClass     // won't compile

static类不能从其他类继承。

答案 3 :(得分:2)

简单的答案是密封类不能用作基类

我试图向您展示密封类是下面代码中的派生类

UIScrollView

和另一个密封功能只能通过它的实例访问。(你不能从它继承)

 public sealed class SealedClass : ClassBase
{
    public override void Print()
    {
        base.Print();
    }
}

答案 4 :(得分:1)

1 - 不,你不能实现静态类。

2 - 不,你不能从静态或密封的类继承

答案 5 :(得分:1)

您可以简单地将它们区分为:

       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

答案 6 :(得分:1)

密封类:

  1. 可以创建实例,但不能继承
  2. 可以包含静态成员和非静态成员。

静态类:

  1. 既不能创建其实例,也不能继承它们
  2. 只能具有静态成员。