English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# Vererbung

Vererbung ist einer der wichtigsten Konzepte der objektorientierten Programmentwicklung. Vererbung ermöglicht es uns, eine Klasse basierend auf einer anderen Klasse zu definieren, was die Erstellung und den Betrieb von Anwendungen einfacher macht. Es ist auch vorteilhaft für die Wiederverwendung von Code und die Einsparung von Entwicklungszeit.

Wenn eine Klasse erstellt wird, muss der Programmierer nicht alle neuen Datenmember und -memberfunktionen neu schreiben, sondern nur eine neue Klasse entwerfen, die die Member der bestehenden Klassen inhaliert. Diese bestehende Klasse wirdBasisklasse, dieser neue Klasse wirdAbgeleitete Klasse.

Das Konzept der Vererbung hat realisiert gehört zu (IS-A) Verhältnisse. Zum Beispiel Saugetiere gehört zu (IS-A) Tiere, der Hund gehört zu (IS-A) Saugetiere, daher der Hund gehört zu (IS-A) Tiere.

Basisklasse und abgeleitete Klasse

Eine Klasse kann von mehreren Klassen oder Interfaces abgeleitet werden, was bedeutet, dass sie Daten und Funktionen aus mehreren Basisklassen oder Interfaces inherits.

Die Syntax zum Erstellen einer abgeleiteten Klasse in C# ist wie folgt:

<Zugriffsmodifikator> class <Basisklasse>
{
 ...
}
class <abgeleitete Klasse> : <Basisklasse>
{
 ...
}

Angenommen, es gibt eine Basisklasse Shape, deren Ableitung ist Rectangle:

using System;
namespace VererbungAnwendung
{
   class Form
   {
      public void setBreite(int w)
      {
         Breite = w;
      }
      public void setHöhe(int h)
      {
         Höhe = h;
      }
      geschützte int Breite;
      geschützte int Höhe;
   }

   // Abgeleitete Klasse
   class Rectangle: Shape
   {
      public int getFläche()
      {
         return (Breite * Höhe);
      }
   }
   
   class RectangleTester
   {
      static void Main(string[93; args)
      {
         Rechteck Rechteck = new Rechteck();

         Rect.setWidth(5);
         Rect.setHeight(7);

         // Druck des Flächeninhalts des Objekts
         Console.WriteLine("Gesamtfläche: {0}",  Rect.getArea()41;;
         Console.ReadKey();
      }
   }
}

Wenn der obige Code kompiliert und ausgeführt wird, ergibt er das folgende Ergebnis:

Gesamtfläche: 35

Initialisierung der Basisklasse

Abgeleitete Klassen erben die Member-Variablen und -Methoden der Basisklasse. Daher sollte das Objekt der Basisklasse vor der Erstellung des Objekts der abgeleiteten Klasse erstellt werden. Sie können die Initialisierung der Basisklasse in der Member-Initialisierungsliste durchführen.

Das folgende Beispiel zeigt dies:

using System;
namespace RectangleApplication
{
   class Rectangle
   {
      // Mitgliedervariablen
      protected double length;
      protected double width;
      public Rectangle(double l, double w)
      {
         length = l;
         Breite = w;
      }
      public double GetArea()
      {
         return length * width;
      }
      public void Anzeigen()
      {
         Console.WriteLine("Länge: {0}", length);
         Console.WriteLine("Breite: {0}", width);
         Console.WriteLine("Fläche: {0}", GetArea()41;;
      }
   }//end class Rectangle  
   class Tisch : Rechteck
   {
      private double kosten;
      public Tisch(double l, double w) : base(l, w)
      { }
      public double GetKosten()
      {
         double kosten;
         kosten = GetFläche() * 70;
         return kosten;
      }
      public void Anzeigen()
      {
         base.Anzeigen();
         Console.WriteLine("Kosten: {0}", GetKosten()41;;
      }
   }
   class AusführenRechteck
   {
      static void Main(string[93; args)
      {
         Tisch t = new Tisch(4.5, 7.5);
         t.Anzeigen();
         Console.ReadLine();
      }
   }
}

Wenn der obige Code kompiliert und ausgeführt wird, ergibt er das folgende Ergebnis:

Länge: 4.5
Breite: 7.5
Fläche: 33.75
Kosten: 2362.5

C# Mehrfachvererbung

Mehrfachvererbung bezieht sich auf die Fähigkeit einer Klasse, gleichzeitig von mehr als einer Oberklasse Verhalten und Eigenschaften zu erben. Im Gegensatz zur einfachen Vererbung, bei der eine Klasse nur von einer Oberklasse erben kann.

C# unterstützt keine Mehrfachvererbung。aber, Sie können ein Interface verwenden, um Mehrfachvererbung zu erreichen. Das folgende Programm demonstriert dies:

using System;
namespace VererbungAnwendung
{
   class Form
   {
      public void setBreite(int w)
      {
         Breite = w;
      }
      public void setHöhe(int h)
      {
         Höhe = h;
      }
      geschützte int Breite;
      geschützte int Höhe;
   }

   // Basis Klasse MalKosten
   public interface MalKosten
   {
      int getKosten(int Fläche);

   }
   // Abgeleitete Klasse
   class Rechteck : Form, MalKosten
   {
      public int getFläche()
      {
         return (Breite * Höhe);
      }
      public int getKosten(int Fläche)
      {
         return Fläche * 70;
      }
   }
   class RectangleTester
   {
      static void Main(string[93; args)
      {
         Rechteck Rechteck = new Rechteck();
         int Fläche;
         Rect.setWidth(5);
         Rect.setHeight(7);
         area = Rect.getArea();
         // Druck des Flächeninhalts des Objekts
         Console.WriteLine("Gesamtfläche: {0}",  Rect.getArea()41;;
         Console.WriteLine("Gesamtkosten der Farbe: ${0}" , Rect.getCost(area)41;;
         Console.ReadKey();
      }
   }
}

Wenn der obige Code kompiliert und ausgeführt wird, ergibt er das folgende Ergebnis:

Gesamtfläche: 35
Gesamtkosten der Farbe: $2450