Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

Classe et méthode scellées C#

Classe et méthode scellées C#

Dans ce didacticiel, nous allons découvrir la classe et la méthode scellées en C# à l'aide d'exemples.

Classe scellée

En C#, lorsque nous ne voulons pas qu'une classe soit héritée par une autre classe, nous pouvons déclarer la classe comme une classe scellée .

Une classe scellée ne peut pas avoir de classe dérivée. Nous utilisons le sealed mot-clé pour créer une classe scellée. Par exemple,

using System;
namespace SealedClass {
  sealed class Animal {
    
  }

  // trying to inherit sealed class
  // Error Code
  class Dog : Animal {
    
  }   

  class Program  {
    static void Main (string [] args) {

      // create an object of Dog class
      Dog d1 = new Dog();  
      Console.ReadLine();
    }
  }
}

Dans l'exemple ci-dessus, nous avons créé une classe scellée Animal . Ici, nous essayons de dériver Chien classe de Animal classe.

Puisqu'une classe scellée ne peut pas être héritée, le programme génère l'erreur suivante :

error CS0509: 'Dog': cannot derive from sealed type 'Animal'

Méthode scellée

Pendant le remplacement de méthode, si nous ne voulons pas qu'une méthode remplacée soit davantage remplacée par une autre classe, nous pouvons la déclarer comme une méthode scellée .

Nous utilisons un sealed mot-clé avec une méthode surchargée pour créer une méthode scellée. Par exemple,

using System;
namespace SealedClass {

  class Animal {
    public virtual void makeSound() {
    Console.WriteLine("Animal Sound");
    }
  }

  class Dog : Animal {

    // sealed method
    sealed public override void makeSound() {

      Console.WriteLine("Dog Sound");
    }
  }

  class Puppy : Dog {

    // trying to override sealed method
    public override void makeSound() {
      Console.WriteLine("Puppy Sound");
    }
  }   

  class Program  {
    static void Main (string [] args) {
      
      // create an object of Puppy class
      Puppy d1 = new Puppy();  
      Console.ReadLine();
    }
  }
}

Dans l'exemple ci-dessus, nous avons remplacé le makeSound() méthode à l'intérieur du Chien classe.

// Inside the Dog class
sealed public override void makeSound() {
  Console.WriteLine("Dog Sound");
}

Notez que nous avons utilisé le sealed mot-clé avec makeSound() . Cela signifie que le chiot classe qui hérite du Chien la classe n'est pas autorisée à remplacer makeSound() .

Par conséquent, nous obtenons une erreur

error CS0239: 'Puppy.makeSound()': cannot override inherited member 'Dog.makeSound()' because it is sealed

lorsque nous essayons de remplacer davantage le makeSound() méthode à l'intérieur du Puppy classer.

Remarque  :Le scellement d'une méthode surchargée empêche le remplacement de la méthode dans l'héritage à plusieurs niveaux.

Pourquoi la classe scellée ?

1. Nous utilisons des classes scellées pour empêcher l'héritage. Comme nous ne pouvons pas hériter d'une classe scellée, les méthodes de la classe scellée ne peuvent pas être manipulées à partir d'autres classes.

Cela aide à prévenir les problèmes de sécurité. Par exemple,

sealed class A { 
  ...
}

// error code
class B : A {
  ...
}

Comme classe A ne peut pas être hérité, classe B ne peut pas remplacer et manipuler les méthodes de la classe A .

2. L'une des meilleures utilisations des classes scellées est lorsque vous avez une classe avec des membres statiques.

Les stylos classe du System.Drawing namespace est l'un des exemples de la classe scellée. Les stylos La classe a des membres statiques qui représentent les stylos avec des couleurs standard. Pens.Blue représente un stylo de couleur bleue.


Langue C

  1. Classe et objet C#
  2. Classe abstraite et méthode C#
  3. Classe partielle C# et méthode partielle
  4. Classes et objets C++
  5. Fonction amie C++ et classes amies
  6. Java - Objet et classes
  7. C# - Héritage
  8. C# - Polymorphisme
  9. ASTM A729 Classe A Double Normalisé et Trempé