web-dev-qa-db-fra.com

Différences de classe statiques et scellées

  1. Existe-t-il une classe à implémenter dans une classe statique? veux dire:

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

    static class ABC : AClass {}
    

    Et

    sealed class ABC : AClass {}
    

Puis-je avoir tort dans une certaine mesure?

140
Saurabh Mahajan

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

En mots simples

Classe statique

Une classe peut être déclarée statique, indiquant qu'elle ne contient que des membres statiques. Il n'est pas possible de créer des instances d'une classe statique à l'aide du nouveau mot-clé. Les classes statiques sont chargées automatiquement par le CLR (Common Language Runtime) .NET Framework lorsque le programme ou l'espace de noms 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. Comme elles ne peuvent jamais être utilisées en tant que classe de base, certaines optimisations d'exécution peuvent accélérer légèrement l'appel des membres de classes scellées.

37
PaRiMaL RaJ

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

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

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

18
C.Evenhuis

La réponse simple est un la 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 ci-dessous

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

et une autre fonctionnalité Sealed est uniquement accessible 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();

    }
}
3
Amin Saadati

Vous pouvez simplement différencier les deux comme suit:

       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
1
Abdul

1 - Non, vous ne pouvez pas implémenter une classe statique.

2 - Non, vous ne pouvez pas hériter d'une classe statique ou scellée

0
Smaiil