IRONSOFTWAREHOME
MISES À JOUR POUR LES DÉVELOPPEURS

C# Vitrual Vs Abstract (Comment cela fonctionne pour les développeurs)

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

En C#, les méthodes virtuelles peuvent être redéfinies dans les classes dérivées, tandis que les méthodes abstraites doivent être redéfinies dans les classes dérivées. Cela permet un comportement flexible et rend possible le polymorphisme en programmation orientée objet. Ces deux concepts autorisent flexibilité et réutilisabilité en programmation orientée objet. Cet article explique les spécificités des méthodes abstraites et virtuelles, en fournissant des exemples clairs et en mettant l'accent sur leurs utilisations pratiques en codage. Nous explorerons également plus tard dans l'article les capacités et cas d'utilisation d'IronPDF.

Classe Abstraite et Méthodes

Une classe abstraite est un type spécial de classe qui ne peut pas être instanciée directement. Au lieu de cela, elle sert de plan pour d'autres classes. Une classe abstraite peut contenir des méthodes abstraites, qui sont des méthodes déclarées dans la classe abstraite mais qui doivent être implémentées dans les classes dérivées concrètes.

public abstract class Vehicle
{
    // Abstract method to be implemented in non-abstract child class
    public abstract void DisplayInfo();
}

Dans cet exemple, la classe Vehicule est abstraite, et AfficherInfo est une méthode abstraite. La méthode AfficherInfo n'a pas d'implémentation dans la classe Vehicule. Elle oblige la classe dérivée à fournir sa propre définition de cette méthode.

Méthodes Virtuelles

Les méthodes virtuelles sont des méthodes dans une classe de base qui ont une implémentation par défaut mais qui peuvent être redéfinies dans les classes dérivées. Le mot-clé virtual est utilisé pour déclarer une méthode comme virtuelle. Les classes dérivées utilisent le mot-clé override pour fournir une implémentation spécifique de la méthode, ce qui aide à comprendre comment une classe enfant peut redéfinir la méthode virtuelle de son parent.

// Non-abstract class
public class Animal
{
    // Virtual method with a default implementation
    public virtual void Speak()
    {
        Console.WriteLine("Some generic animal sound");
    }
}

Ici, la classe Animal a une méthode virtuelle Parler avec une implémentation par défaut. Les classes dérivées peuvent redéfinir la méthode pour fournir un son animal spécifique en utilisant le mot-clé override.

Combinaison de Méthodes Virtuelles et Abstraites

Une classe peut avoir à la fois des méthodes abstraites et virtuelles. Les méthodes abstraites n'ont pas d'implémentation et doivent être redéfinies dans les classes dérivées, tandis que les méthodes virtuelles ont une implémentation par défaut que les classes dérivées peuvent redéfinir éventuellement.

Considérez un scénario où vous construisez un système qui modélise différents types de véhicules, chacun avec sa propre façon d'afficher des informations. Voici comment vous pouvez utiliser des méthodes abstraites et virtuelles :

public abstract class Vehicle
{
    // Abstract method
    public abstract void DisplayInfo();

    // Virtual method
    public virtual void StartEngine()
    {
        Console.WriteLine("Engine started with default configuration.");
    }
}

Dans cette classe Vehicule, AfficherInfo est une méthode abstraite, obligeant toutes les classes dérivées à implémenter leur propre façon d'afficher des informations. DemarrerMoteur, cependant, fournit une façon par défaut de démarrer le moteur, qui peut être redéfini par une classe héritée si nécessaire.

Exemple avec des Classes Dérivées

Maintenant, définissons une classe Car, une classe enfant non abstraite qui hérite de Vehicle et implémente la méthode abstraite tout en surchargant éventuellement la méthode virtuelle :

public class Car : Vehicle
{
    // Override the abstract method
    public override void DisplayInfo()
    {
        Console.WriteLine("This is a car.");
    }

    // Override the virtual method
    public override void StartEngine()
    {
        Console.WriteLine("Car engine started with custom settings.");
    }
}

Ici, la classe Voiture fournit des implémentations spécifiques pour la méthode abstraite AfficherInfo et la méthode virtuelle DemarrerMoteur.

Différence et Quand Utiliser

  • Utilisez des méthodes abstraites lorsque toutes les classes dérivées doivent fournir leur propre implémentation d'une méthode.
  • Utilisez des méthodes virtuelles lorsque les classes dérivées devraient avoir l'option de redéfinir une implémentation par défaut ou de fournir des comportements supplémentaires.

Les méthodes abstraites et virtuelles sont des fonctionnalités puissantes en C# qui vous permettent d'écrire du code plus maintenable et réutilisable. En définissant des méthodes dans une classe de base comme abstraites ou virtuelles, vous pouvez dicter quelles méthodes doivent être redéfinies dans les classes dérivées et quelles méthodes peuvent être redéfinies éventuellement pour modifier ou étendre le comportement par défaut.

Redéfinir les Méthodes Virtuelles

Redéfinir les méthodes virtuelles dans les classes dérivées permet un comportement personnalisé tout en conservant l'option d'appeler l'implémentation de la classe de base. Cela s'accomplit en utilisant le mot-clé base.

Exemple de Redéfinition et Appel de l'Implémentation de Base

public class ElectricCar : Car
{
    // Override the StartEngine method
    public override void StartEngine()
    {
        base.StartEngine(); // Call the base class implementation
        Console.WriteLine("Electric car engine started with energy-saving mode.");
    }
}

Dans cet exemple, ElectricCar, qui est une classe enfant de Car, surcharge la méthode StartEngine héritée de sa classe parente. Elle appelle l'implémentation de la classe de base et ajoute un comportement supplémentaire spécifique aux voitures électriques.

Implémenter des Classes Abstraites et Non-Abstraites

Il est essentiel de comprendre les différences pratiques et les applications des classes abstraites et non-abstraites en développement logiciel. Les classes abstraites servent de modèle pour d'autres classes, tandis que les classes non-abstraites sont utilisées pour instancier des objets. Le choix entre l'utilisation d'une classe abstraite et d'une classe non-abstraite dépend de la nécessité de créer une classe de base qui ne devrait pas être instanciée seule.

IronPDF : Bibliothèque PDF en C#

C# Virtual Vs Abstract (Comment ça fonctionne pour les développeurs) : Figure 1 - IronPDF

IronPDF est une bibliothèque PDF complète conçue pour générer, éditer et lire des documents PDF directement dans les applications .NET. Cet outil se distingue par sa capacité à créer des PDF directement à partir de chaînes, fichiers, et URLs HTML. Les développeurs peuvent créer, modifier et extraire du contenu PDF par programme dans des projets C#. Explorons un exemple d'IronPDF dans le contexte de notre article.

La principale capacité d'IronPDF est de convertir le HTML en PDF, garantissant que les mises en page et styles sont conservés. Cet outil est idéal pour créer des PDF à partir de contenu Web pour des rapports, des factures et de la documentation. Il prend en charge la conversion de fichiers HTML, URLs, et chaînes HTML en fichiers PDF.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
        
        // Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
        
        // Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}

Exemple de Code

Voici un exemple de code réel simple pour illustrer l'utilisation des mots-clés virtual et abstract dans le contexte de l'extension des fonctionnalités d'IronPDF :

public abstract class PdfReportGenerator
{
    // Use abstract method to force derived classes to implement their custom PDF generation logic
    public abstract void GenerateReport(string filePath);

    // A virtual function allows derived classes to override the default implementation of PDF setup
    public virtual void SetupPdfGenerator()
    {
        // Default PDF setup logic that can be overridden by derived classes
        IronPdf.Installation.TempFolderPath = @"F:\TempPdfFiles";
    }
}

public class MonthlyReportGenerator : PdfReportGenerator
{
    // Override abstract method to provide specific implementation
    public override void GenerateReport(string filePath)
    {
        var pdf = new ChromePdfRenderer();
        pdf.RenderHtmlAsPdf("<h1>Monthly Report</h1> <p>Add Your report content here....</p>").SaveAs(filePath);
    }

    // Optionally override the virtual method to customize the setup
    public override void SetupPdfGenerator()
    {
        base.SetupPdfGenerator();
        // Additional setup logic specific to monthly reports
        IronPdf.Installation.TempFolderPath = @"F:\MonthlyReports";
    }
}

class Program
{
    static void Main(string[] args)
    {
        License.LicenseKey = "License-Key";
        PdfReportGenerator reportGenerator = new MonthlyReportGenerator();
        reportGenerator.SetupPdfGenerator();
        reportGenerator.GenerateReport(@"F:\MonthlyReports\MonthlyReport.pdf");
        Console.WriteLine("Report generated successfully.");
    }
}

Dans cet exemple d'implémentation personnalisée, GenerateurRapportPDF est une classe abstraite définissant un contrat pour générer des rapports PDF avec une méthode pour générer le rapport et une méthode virtuelle pour la configuration qui peut être redéfinie éventuellement. GenerateurRapportMensuel est une implémentation concrète qui fournit les spécificités pour générer un rapport mensuel et personnalise la configuration en redéfinissant la méthode virtuelle.

C# Virtual Vs Abstract (Comment ça fonctionne pour les développeurs) : Figure 2 - Résultat du rapport

Conclusion

Comprendre et utiliser efficacement les méthodes virtuelles et abstraites peut considérablement améliorer votre programmation C#. Rappelez-vous, les méthodes abstraites exigent qu'une classe dérivée fournisse une implémentation, tandis que les méthodes virtuelles permettent un dépassement optionnel d'une implémentation par défaut. La bibliothèque IronPDF offre une licence d'essai gratuite et des options de licence, avec des licences à partir de $999, fournissant une solution complète pour vos besoins en 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.

OR
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 Iron Suite
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
Bibliothèque C# NuGet pour PDF
Installer avec NuGet

Version : 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. Dans l'explorateur de solutions, faites un clic droit sur Références, Gestion des packages NuGet
  2. Sélectionnez Parcourir et recherchez « IronPDF »
  3. Sélectionnez le package et installez
C# PDF DLL
Télécharger DLL

Version : 2026.9

ou téléchargez l'installateur Windows ici.

  1. Téléchargez et décompressez IronPDF à un emplacement tel que ~/Libs dans votre répertoire de solution
  2. Dans l'explorateur de solutions Visual Studio, faites un clic droit sur Références. Sélectionnez Parcourir, « IronPDF.dll »

Licences à partir de 749 $