Simulation d'héritage multiple dans C #
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>
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>
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>
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!