Est-il possible d’étendre 2 classes?

J’ai ces cours:

public class myClassPage : System.Web.UI.Page { public myClassPage () { } } public class myClassControl : System.Web.UI.UserControl { public myClassControl () { } } 

et j’aimerais avoir une autre classe qui étend ces classes, quelque chose comme:

 public class myClassData : myClassPage, myClassControl { public myClassData () { } } 

c’est possible? Ou que puis-je faire?

Dans le cas où vous auriez besoin d’étendre deux classes, vous pourriez être amené à privilégier la composition plutôt que l’inheritance et à utiliser des interfaces comme d’autres réponses l’ont mentionné. Un exemple:

Commencez par définir vos interfaces

 interface IFoo { void A(); } interface IBar { void B(); } 

Puis créez des classes concrètes qui implémentent chaque interface

 class Foo : IFoo { public void A() { // code } } class Bar : IBar { public void B() { // code } } 

Enfin, dans la classe où vous souhaitez présenter les deux ensembles de comportements, vous pouvez implémenter chaque interface, mais composer les implémentations avec les classes concrètes.

 public class Baz : IFoo, IBar { IFoo foo = new Foo(); // or inject IBar bar = new Bar(); // or inject public void A() { foo.A(); } public void B() { bar.B(); } } 

Ceci s’appelle l’inheritance multiple. Vous pouvez trouver plus d’informations sur Wikipedia – Héritage multiple concernant le sujet.

L’inheritance multiple est supporté dans certaines langues:

Les langages prenant en charge l’inheritance multiple incluent: C ++, Common Lisp, Curl, Dylan, Eiffel, Logtalk, Object REXX, Scala, OCaml, Perl, Perl 6, POP-11, Python et Tcl.

En C #, les interfaces peuvent être utilisées pour imiter un inheritance multiple:

Certains langages orientés object, tels que C # , Java et Ruby implémentent l’inheritance unique, bien que les interfaces fournissent certaines des fonctionnalités de l’inheritance multiple réel.

Exemple:

 public class myClassData : myClassPageInterface, myClassControlInterface { // ... } 

Il n’est pas possible d’hériter de plusieurs classes de base en C #. Vous êtes en mesure d’implémenter deux interfaces ou de suivre des solutions de contournement (même si cela doit être fait avec prudence).

Liens:

  • SO: Héritage multiple en C # : Discussion des méthodes MI et bonne description de la “composition”.
  • Projet de code : un exemple de solution de contournement
  • C-SharpCorner : Quelques alternatives à l’inheritance multiple

Ce n’est pas possible, mais regardez ce lien.

Modèle d’inheritance multiple simulé

utiliser l’interface

in c # class Héritage multiple non pris en charge

aussi se référer

http://en.wikipedia.org/wiki/Multiple_inheritance