Maison > développement back-end > C++ > Comment simuler l'héritage multiple en C # et quelles sont les alternatives?

Comment simuler l'héritage multiple en C # et quelles sont les alternatives?

Mary-Kate Olsen
Libérer: 2025-01-29 20:51:10
original
599 Les gens l'ont consulté

How Can Multiple Inheritance Be Simulated in C# and What Are the Alternatives?

Simulation d'héritage multiple dans C #

Multi-héritage (une classe hérite de plusieurs catégories de parents) est généralement considérée comme un complexe et facile à faire des erreurs. Cependant, dans certains cas, cela peut être bénéfique.

Utiliser la simulation d'interface plus d'héritage

C # ne prend pas en charge plus d'héritage, mais peut être utilisé pour le simuler. Ce qui suit est un exemple:

Cependant, l'inconvénient de cette méthode de simulation est que tout changement d'interface doit être modifié
<code class="language-csharp">public interface IFirst { void FirstMethod(); }
public interface ISecond { void SecondMethod(); }

public class First : IFirst { public void FirstMethod() { Console.WriteLine("First"); } }
public class Second : ISecond { public void SecondMethod() { Console.WriteLine("Second"); } }
public class FirstAndSecond : IFirst, ISecond {
    First first = new First();
    Second second = new Second();
    public void FirstMethod() { first.FirstMethod(); }
    public void SecondMethod() { second.SecondMethod(); }
}</code>
Copier après la connexion
.

FirstAndSecond Méthode de génération de code

Idéalement, il devrait y avoir un moyen de générer automatiquement une combinaison de plusieurs classes existantes. Cela peut être implémenté en utilisant la génération de code ou la syntaxe C # fictive, comme indiqué ci-dessous:

combinaison alternative

<code class="language-csharp">public class FirstAndSecond : IFirst from First, ISecond from Second { }</code>
Copier après la connexion

Au lieu d'essayer de simuler plus d'héritage, il est préférable d'envisager d'utiliser une combinaison. L'interface peut définir les exigences de combinaison:

Simplifiez la méthode d'extension pour appeler

<code class="language-csharp">public interface ISteerable { SteeringWheel wheel { get; set; } }
public interface IBrakable { BrakePedal brake { get; set; } }

public class Vehicle : ISteerable, IBrakable {
    public SteeringWheel wheel { get; set; }
    public BrakePedal brake { get; set; }
    public Vehicle() { wheel = new SteeringWheel(); brake = new BrakePedal(); }
}</code>
Copier après la connexion
La méthode d'extension (introduite en C # 3.0) peut encore simplifier la méthode des attributs cachés appelle:

Par rapport à l'héritage multiple de simulation, cette alternative fournit une méthode plus claire et plus flexible.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal