IRONSOFTWAREHOME
MISES À JOUR POUR LES DÉVELOPPEURS

C# Sealed Class (Comment ça fonctionne pour les développeurs)

Jacob Mellor, Directeur technique @ Team Iron
Jacob Mellor
Updated: 21 avril 2026

Dans le monde de la programmation orientée objet, le langage C# fournit aux développeurs un ensemble d'outils polyvalents pour concevoir et mettre en œuvre des logiciels robustes. L'une de ces fonctionnalités qui ajoute un niveau supplémentaire de contrôle à l'héritage de classe est le concept de classe scellée. Les classes scellées offrent une manière unique de restreindre la hiérarchie d'héritage, offrant un niveau de sécurité et d'encapsulation qui peut être bénéfique dans certains scénarios. Dans cet article, nous approfondirons les subtilités des classes scellées en C# et explorerons également le package NuGet IronPDF de Iron Software.

Qu'est-ce que les Classes Scellées et les Méthodes Scellées ?

Classe Scellée : En C#, une classe scellée est une classe qui ne peut pas être héritée. En utilisant le mot-clé sealed, les développeurs peuvent empêcher d'autres classes de dériver ou de s'étendre à partir de la classe scellée. Cette restriction délibérée garantit que la classe scellée ne peut pas être utilisée comme classe de base pour toute autre classe, limitant l'étendue de la hiérarchie d'héritage. Les classes scellées sont souvent employées lorsqu'un développeur souhaite contrôler et finaliser la structure d'une classe, empêchant ainsi les modifications involontaires par héritage.

Considérez l'exemple suivant :

public sealed class Animal
{
    public string Species { get; set; }

    public void MakeSound()
    {
        Console.WriteLine("Generic animal sound");
    }
}

// The following code will cause a compilation error because 'Animal' is sealed and cannot be inherited:
// public class Dog : Animal // Error: Cannot inherit from sealed class 'Animal'
// {
// }

Contrairement aux structures, qui sont implicitement scellées, la classe scellée doit être déclarée en utilisant le mot-clé sealed comme indiqué ci-dessus. Dans cet exemple, la classe Animal est déclarée comme scellée, ce qui rend l'héritage impossible pour toute autre classe.

Méthode Scellée : En plus de sceller des classes entières, C# permet également aux développeurs de sceller des méthodes individuelles dans une classe. Une méthode scellée est une méthode que toute classe dérivée ne peut pas remplacer. Cela garantit que le comportement de la méthode reste cohérent dans toutes les sous-classes, offrant un niveau de prévisibilité dans la logique de l'application.

Pour sceller une méthode, utilisez le modificateur sealed :

public class Animal
{
    public string Species { get; set; }

    // A virtual method allows derived classes to override it.
    public virtual void MakeSound()
    {
        Console.WriteLine("Generic animal sound");
    }
}

public class Dog : Animal
{
    // The sealed override prevents further overriding of this method.
    public sealed override void MakeSound()
    {
        Console.WriteLine("Bark!");
    }
}

Le mot-clé virtual permet de substituer la méthode dans les classes dérivées, tandis que le mot-clé sealed empêche toute substitution supplémentaire de la méthode virtuelle de la classe de base dans toutes les sous-classes suivantes.

Classe Scellée et Membres de Classe : Les classes scellées peuvent également inclure des membres scellés, tels que des propriétés, méthodes et événements. Cette combinaison de classe scellée et de membres scellés garantit un haut degré de contrôle sur le comportement et la structure de la classe.

Considérez l'exemple suivant :

public sealed class ControlledClass
{
    // A sealed property that prevents overriding.
    public sealed string ControlledProperty { get; set; }

    // A method that cannot be redefined by derived classes.
    public virtual sealed void ControlledMethod()
    {
        // Method implementation
        Console.WriteLine("Executing controlled method.");
    }

    // A sealed event that cannot be subscribed to or raised by derived classes.
    public sealed event EventHandler ControlledEvent;

    // Sealed indexers, if applicable
    public sealed string this[int index]
    {
        get { return "Value"; }
        set 
        { 
            // Setter implementation 
        }
    }
}

Dans cet exemple, chaque aspect de ControlledClass est scellé – la propriété, la méthode, l'événement, et même un indexeur, le cas échéant. Ce niveau de scellement fournit une structure robuste et inaltérable, idéale pour les scénarios où la conception de la classe doit rester fixe.

La Raison d'Être de la Classe Scellée

Sécurité du Code : Les classes scellées contribuent à la sécurité du code en empêchant l'accès et la modification non autorisés. Lorsqu'une classe est scellée, elle sert d'entité fermée avec une interface et un comportement bien définis. Cette encapsulation minimise le risque d'effets secondaires ou de modifications involontaires qui pourraient potentiellement compromettre la stabilité et la sécurité de la base de code.

Intégrité de la Conception : Dans les grandes bases de code ou les frameworks, maintenir l'intégrité de la conception est primordial. Une classe scellée agit comme un bloc de construction fondamental avec des structures fixes, réduisant les chances de modifications involontaires. Cela est particulièrement bénéfique dans les scénarios où une classe sert de composant central d'un système, et son comportement doit rester cohérent entre les différents modules.

Bonnes Pratiques pour l'Utilisation de la Classe Scellée

  1. Utiliser la Classe Scellée avec Parcimonie : Bien que la classe scellée offre des avantages, elle doit être employée judicieusement. Une utilisation excessive de classes scellées peut conduire à un code rigide et moins maintenable.
  2. Documenter l'Intention : Lorsque vous scellez une classe ou une méthode, il est crucial de documenter l'intention derrière cette décision. Expliquez pourquoi une classe particulière est scellée et quelles considérations de conception ont conduit à ce choix.
  3. Considérer l'Extensibilité Future : Avant de sceller une classe, envisagez si des exigences futures pourraient nécessiter de l'extensibilité. S'il est probable qu'une classe doive être étendue, la sceller peut entraver le développement futur.
  4. Utiliser des Méthodes Scellées pour la Stabilité : Sceller des méthodes peut être bénéfique lorsque le comportement de base d'une méthode doit rester stable à travers différentes sous-classes. Cela peut améliorer la prévisibilité du code.
  5. Elle ne Peut Aussi Être Abstraite : Une classe/méthode scellée ne peut pas non plus être une classe/méthode abstraite car les classes abstraites sont conçues pour être héritées par d'autres classes tandis que les classes scellées restreignent l'héritage.

Présentation d'IronPDF

C# Classe scellée (Comment cela fonctionne pour les développeurs) : Figure 1 - Page Web d'IronPDF

IronPDF est une bibliothèque PDF C# de Iron Software et est un générateur et lecteur PDF moderne.

Installation

IronPDF peut être installé en utilisant la console du Package Manager NuGet ou en utilisant le Package Manager de Visual Studio. Ci-dessous est la commande pour la console :

PM > Install-Package IronPdf

Ou, pour installer IronPDF en utilisant le gestionnaire de packages NuGet, recherchez "IronPDF" dans la barre de recherche du gestionnaire de packages NuGet.

C# Classe scellée (Comment cela fonctionne pour les développeurs) : Figure 2 - Installation de la bibliothèque IronPDF via le gestionnaire de packages NuGet

IronPDF et les Classes Scellées

Ensemble, le mot-clé sealed et IronPDF peuvent être utilisés pour empêcher une bibliothèque de sous-classe ou une bibliothèque dérivée de remplacer les membres hérités et aussi de générer des PDFs.

namespace OrderBy
{
    public class Program
    {
        static void Main()
        {
            Console.WriteLine("Demo Sealed Class and IronPdf");
            var dog = new Dog();
            dog.MakeSound();
            dog.Print();
        }
    }

    // Base class
    public class Animal
    {
        public string Species { get; set; }

        public virtual void MakeSound()
        {
            Console.WriteLine("Generic animal sound");
        }

        public virtual void Print()
        {
            Console.WriteLine("Generic animal Print");
        }
    }

    public class Dog : Animal
    {
        // Sealed override ensures method cannot be overridden in further derived classes.
        public sealed override void MakeSound()
        {
            Console.WriteLine("Bark!");
        }

        public sealed override void Print()
        {
            var pdfRenderer = new ChromePdfRenderer();
            string content = @"
            <!DOCTYPE html>
            <html>
            <body>
                <h1>Hello, Dog!</h1>
                <p>This is Print from Derived class.</p>
                <p>Print Animal Dog</p>
                <p>Print Animal Sound: Bark</p>
            </body>
            </html>";
            
            pdfRenderer.RenderHtmlAsPdf(content).SaveAs("dog.pdf");
        }
    }
}

C# Classe scellée (Comment cela fonctionne pour les développeurs) : Figure 3 - Sortie de la console, montrant la commande d'exécution et tout message résultant dans la console

Ci-dessous est le PDF généré par IronPDF

C# Classe scellée (Comment cela fonctionne pour les développeurs) : Figure 4 - PDF généré à partir de l'exemple de code précédent

Licence (Essai Gratuit Disponible)

IronPDF. Cette clé doit être placée dans appsettings.json.

{
    "IronPdf.LicenseKey": "your license key"
}
JSON

Fournissez votre email pour obtenir une licence d'essai.

Conclusion

Les classes scellées en C# offrent aux développeurs un mécanisme puissant pour contrôler la hiérarchie d'héritage et garantir que certaines classes et leurs membres ne peuvent pas être étendus ou surchargés. Bien que l'utilisation des classes scellées doive être soigneusement considérée, elles fournissent un moyen efficace d'encapsuler la fonctionnalité et d'éviter les modifications involontaires. En comprenant le concept de classes et méthodes scellées, les développeurs peuvent prendre des décisions éclairées sur le moment et l'endroit pour appliquer cette restriction, contribuant à créer des systèmes logiciels maintenables, sécurisés et prévisibles. Avec IronPDF, nous pouvons également imprimer des documents PDF.

Jacob Mellor, Directeur technique @ Team Iron
Directeur technique

Jacob Mellor est directeur de la technologie chez Iron Software et un ingénieur visionnaire pionnier de la technologie C# PDF. En tant que développeur à l'origine de la base de code centrale d'Iron Software, il a façonné l'architecture des produits de l'entreprise depuis sa création, la transformant aux côtés du PDG Cameron Rimington en une entreprise de plus de 50 personnes au service de la NASA, de Tesla et d'agences gouvernementales mondiales.

...
Lire la suite

Articles connexes

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Your trial license will be sent to your email address

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Réservez votre Démonstration en direct gratuite
Booking Badge

De confiance par des millions d'ingénieurs dans le monde entier

Logos des clients d'Iron Software
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise