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

Maîtriser les classes et méthodes sealed en C# : Quand les utiliser, exemples clairs et sécurité du code

Comprendre les classes et méthodes sealed en C#

Ce guide explique comment utiliser le mot-clé sealed pour restreindre l'héritage et la surcharge de méthodes en C#, avec des exemples de code pratiques.

Classe Sealed

En C#, le mot-clé sealed empêche une classe d'être héritée. Une classe sealed ne peut jamais avoir de type dérivé.

Exemple :

using System;
namespace SealedClass {
    sealed class Animal { }
    // Essayer d'hériter d'une classe sealed cause une erreur de compilation
    class Chien : Animal { }
    class Program {
        static void Main (string [] args) {
            // créer un objet de la classe Chien
            Chien d1 = new Chien();
            Console.ReadLine();
        }
    }
}

Le compilateur émet :

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

Méthode Sealed

Quand vous surchargez une méthode virtuelle, vous pouvez vouloir empêcher une surcharge ultérieure dans les classes dérivées. Préfixez la déclaration override avec sealed pour y parvenir.

Exemple :

using System;
namespace SealedClass {
    class Animal {
        public virtual void FaireSon() {
            Console.WriteLine("Son Animal");
        }
    }
    class Chien : Animal {
        // Surcharge sealed
        sealed public override void FaireSon() {
            Console.WriteLine("Son Chien");
        }
    }
    class Chiot : Chien {
        // Tenter de surcharger une méthode sealed cause une erreur de compilation
        public override void FaireSon() {
            Console.WriteLine("Son Chiot");
        }
    }
    class Program {
        static void Main (string [] args) {
            // créer un objet de la classe Chiot
            Chiot d1 = new Chiot();
            Console.ReadLine();
        }
    }
}

Erreur résultante :

error CS0239: 'Chiot.FaireSon()': cannot override inherited member 'Chien.FaireSon()' because it is sealed

Astuce : Sceller une méthode surchargée arrête toute surcharge ultérieure dans une chaîne d'héritage multiniveau.


Pourquoi utiliser des classes Sealed ?

  1. Sécurité et Intégrité – Une classe sealed ne peut pas être étendue, donc son comportement reste prévisible et ne peut pas être modifié par des sous-classes.
  2. Performance – Le runtime peut optimiser les types sealed plus agressivement car il sait qu'il n'y a pas de sous-classes.
  3. Types Utilitaires Statiques – De nombreuses bibliothèques exposent des membres statiques via des classes sealed (par exemple, Pens dans System.Drawing).

Par exemple, la classe Pens fournit des instances Pen pré-configurées pour les couleurs standards :

Pen bluePen = Pens.Blue; // représente un stylo bleu

Puisque Pens est sealed, ses membres statiques ne peuvent pas être surchargés ou modifiés par d'autres types.

Langue C

  1. Classes et objets C# : Fondations pour une POO robuste
  2. Maîtriser les classes et méthodes abstraites C# : Guide pratique
  3. Comprendre les classes et méthodes partielles C#
  4. Classes et objets C++ : Guide pratique de la programmation orientée objet
  5. Fonctions amies et classes amies en C++ : Maîtriser le contrôle d'accès
  6. Maîtriser Java : Comprendre les Objets, Classes et Concepts POO de Base
  7. Maîtriser l'héritage en C# : créer du code réutilisable et maintenable
  8. Polymorphisme en C# : liaison statique vs dynamique expliquée
  9. ASTM A729 Classe A : Acier doublement normalisé et revenu - Propriétés clés et normes