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