156 votes

Différences entre les classes statique et scellée

  1. Y a-t-il une classe qui peut être implémentée dans une classe statique ? signifie :

    static class ABC : Anyclass
  2. Existe-t-il une classe qui peut être héritée à la fois dans une classe scellée et dans une classe statique ?
    signifie :

    static class ABC : AClass {}

    Et

    sealed class ABC : AClass {}

Puis-je me tromper dans une certaine mesure ?

678voto

Cela peut vous aider :

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

40voto

PaRiMaL RaJ Points 9206

En termes simples

Classe statique

Une classe peut être déclarée statique, ce qui indique qu'elle ne contient que des membres statiques. Il n'est pas possible de créer des instances d'une classe statique en utilisant le mot-clé new. Les classes statiques sont chargées automatiquement automatiquement par le CLR (common language runtime) de .NET Framework lorsque le programme ou l'espace de nom contenant la classe est chargé.

Classe scellée

Une classe scellée ne peut pas être utilisée comme classe de base. Les classes scellées sont principalement utilisées pour empêcher la dérivation. Parce qu'elles ne peuvent jamais être utilisées comme classe de base, certaines optimisations d'exécution peuvent rendre l'appel des membres de la classe scellée un peu plus rapidement.

19voto

C.Evenhuis Points 10818

Vous pouvez laisser un sealed hériter d'une autre classe, mais vous ne pouvez pas hériter de de a sealed classe :

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

A static ne peut pas hériter d'autres classes.

5voto

Abdul Points 282

Vous pouvez simplement différencier les deux comme :

       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

4voto

Amin Saadati Points 142

La réponse simple est une une classe scellée ne peut pas être utilisée comme classe de base .

J'essaie de vous montrer que la classe scellée est une classe dérivée dans le code suivant

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

et une autre fonctionnalité scellée n'est accessible qu'avec une instance de celle-ci (vous ne pouvez pas en hériter).

 class Program
{
    static void Main(string[] args)
    {
        SealedClass objSeald = new SealedClass();
        objSeald.Name = "Blah blah balh";
        objSeald.Print();

    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X