Maison  >  Article  >  développement back-end  >  Héritage C#

Héritage C#

高洛峰
高洛峰original
2017-02-08 13:35:561136parcourir

L'héritage est l'un des concepts les plus importants de la programmation orientée objet. L'héritage nous permet de définir une classe basée sur une autre classe, ce qui facilite la création et la maintenance d'applications. Cela permet également de réutiliser le code et de gagner du temps de développement.

Lors de la création d'une classe, les programmeurs n'ont pas besoin de réécrire complètement les nouvelles données membres et les fonctions membres. Ils ont seulement besoin de concevoir une nouvelle classe et d'hériter des membres de la classe existante. Cette classe existante est appelée classe de base et la nouvelle classe est appelée classe dérivée.

L'idée d'héritage met en œuvre la relation Appartient à (IS-A). Par exemple, les mammifères sont des animaux (IS-A), les chiens sont des mammifères (IS-A), donc les chiens sont des animaux (IS-A).

Classes de base et dérivées

Une classe peut être dérivée de plusieurs classes ou interfaces, ce qui signifie qu'elle peut hériter des données et des fonctions de plusieurs classes de base ou interfaces.

La syntaxe de création d'une classe dérivée en C# est la suivante :

class { ... } class ;{ .. }

Supposons qu'il existe une classe de base Shape et que sa classe dérivée est Rectangle :

using System;namespace InheritanceApplication{ class Shape { public void setWidth(int w) { width = w; } PUBLIC VOID SETHEIGHT (int H) {Height = H;} Protected Int width; Protected Int Height;} // Rectangle de classe Disposter : Shape {PublicInt Getare a () {Return (Width*Height);}} Class Rectangleteter {Static voidMain(string[] args) { Rectangle Rect = new Rectangle(); Rect.setHeight(7); area: {0 }", Rect .getArea()); Console.ReadKey(); } }}

Lorsque le code ci-dessus est compilé et exécuté, il produira les résultats suivants :

Initialisation de la classe de base

La classe dérivée hérite des variables membres et des méthodes membres de la classe de base. Par conséquent, l’objet de classe parent doit être créé avant la création de l’objet de classe enfant. Vous pouvez initialiser la classe parent dans la liste d'initialisation des membres.

Le programme suivant le démontre :

using System;namespace RectangleApplication{   class Rectangle   {      // 成员变量      protégé double longueur ;      double largeur protégée ;      public Rectangle(double l, double w)      {         longueur = l ;         largeur = w ;      }      public double GetArea()      {         retourne longueur * largeur ;      }      public void Display()      {         Console.WriteLine("长度: {0}", length);         Console.WriteLine("宽度: {0}", width);         Console.WriteLine("面积: {0}", GetArea());      }   }//end class Rectangle     class De table : Rectangle   {      privé double coût ;      publicTabletop(double l, double w) : base(l, w)      { }      public double GetCost()      {         double coût ;         coût = GetArea() * 70 ;         frais de retour ;      }      public void Display()      {         base.Display();         Console.WriteLine("成本: {0}", GetCost());      }   }   classExecuteRectangle   {      static void Main(string[] args)      {         Tabletop t = new Tabletop(4.5,7.5);         t.Display();         Console.ReadLine();      }   }}

当上面的代码被编译和执行时,它会产生下列结果:

长度: 4.5宽度: 7.5面积: 33.75成本: 2362.5

C#多重继承

多重继承指的是一个类别可以同时从多于一个父类继承行为与特征的功能。与单一继承相对,单一继承指一个类别只可以继承自一个父类。Le langage C#

en utilisant System;namespace InheritanceApplication{   class Shape    {      public void setWidth(int w)      {         width = w ;      }      public void setHeight(int h)      {         height = h;      }      protégé int width ;      hauteur int protégée ;   }   // 基类 PaintCost   interface publique PaintCost   {      int getCost(int area);   }   // 派生类   class Rectangle : Shape, PaintCost    {      public int getArea()      {         return (width * height);      }      public int getCost(int area)      {        zone de retour * 70 ;      }   }   class RectangleTester   {      static void Main(string[] args)      {         Rectangle Rect = new Rectangle();         zone int ;         Rect.setWidth(5);         Rect.setHeight(7);         zone = Rect.getArea();         // Paramètres de configuration           Console.WriteLine("Présentation: {0}",  Rect.getArea());         Console.WriteLine("油漆总成本: ${0}" , Rect.getCost(area));         Console.ReadKey();      }   }}

当上面的代码被编译和执行时,它会产生下列结果:

总面积: 35油漆总成本: 2 450 $

更多C# 继承相关文章请Il n'y a aucun problème avec PHP !
Déclaration:
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
Article précédent:Comment utiliser ES en C#Article suivant:Comment utiliser ES en C#