In der objektorientierten Programmierung ist Vererbung ein wichtiger Mechanismus, um die Wiederverwendbarkeit von Code zu verbessern und die Struktur von Klassen hierarchisch zu organisieren. Die Programmiersprache C# bietet ebenfalls Vererbung als eine der Kernfunktionen an. In diesem Artikel werden wir uns genauer mit dem Thema C# Vererbung befassen, die Grundlagen erklären und einige Anwendungsmöglichkeiten aufzeigen.
Grundlagen der C# Vererbung: Vererbung bedeutet, dass eine Klasse (auch als Basis- oder Elternklasse bezeichnet) eine oder mehrere Eigenschaften und Methoden an eine andere Klasse (auch als abgeleitete oder Kindklasse bezeichnet) weitergibt. Die abgeleitete Klasse kann diese Eigenschaften und Methoden dann verwenden, ohne sie erneut zu definieren. In C# wird die Vererbung durch das Schlüsselwort „class“ und den Doppelpunkt „:“ implementiert.
Ein Beispiel: Wir definieren eine Klasse namens „Fahrzeug“, die zwei Eigenschaften hat: „Geschwindigkeit“ und „Anzahl_Räder“. Jetzt möchten wir eine Klasse „Auto“ erstellen, die diese Eigenschaften erbt und zusätzlich eine weitere Eigenschaft „Marke“ hat. Hier ist der Code:
public class Fahrzeug
{
public int Geschwindigkeit { get; set; }
public int Anzahl_Räder { get; set; }
}
public class Auto : Fahrzeug
{
public string Marke { get; set; }
}
In diesem Beispiel erbt die Klasse „Auto“ die Eigenschaften „Geschwindigkeit“ und „Anzahl_Räder“ von der Klasse „Fahrzeug“ und hat zusätzlich ihre eigene Eigenschaft „Marke“.
Anwendungsmöglichkeiten der C# Vererbung: C# Vererbung kann in vielen Situationen nützlich sein, zum Beispiel:
Wiederverwendbarkeit von Code: Wenn Sie eine Klasse haben, die bestimmte Methoden und Eigenschaften enthält, die in einer anderen Klasse wiederverwendet werden können, können Sie die Vererbung nutzen, um den Code zu reduzieren und die Wartbarkeit zu verbessern.
Erweiterbarkeit von Klassen: Wenn Sie eine bestehende Klasse erweitern und zusätzliche Eigenschaften oder Methoden hinzufügen möchten, können Sie dies durch Vererbung erreichen, anstatt die bestehende Klasse zu ändern.
Klassen-Hierarchie: Durch die Vererbung können Sie eine hierarchische Struktur von Klassen erstellen, die verschiedene Ebenen von Abstraktionen darstellen. Dies kann insbesondere bei großen und komplexen Projekten hilfreich sein.
Weitere Beispiele für C# Vererbung:
Tier-Klassen: Sie könnten eine Basis-Klasse namens „Tier“ erstellen, die grundlegende Eigenschaften wie „Alter“, „Name“ und „Geschlecht“ enthält. Dann können Sie abgeleitete Klassen wie „Hund“, „Katze“ und „Vogel“ erstellen, die diese Eigenschaften erben und spezifische Eigenschaften wie „Rasse“, „Farbe“ oder „Flügelspannweite“ hinzufügen.
public class Tier
{
public int Alter { get; set; }
public string Name { get; set; }
public string Geschlecht { get; set; }
}
public class Hund : Tier
{
public string Rasse { get; set; }
}
public class Katze : Tier
{
public string Farbe { get; set; }
}
public class Vogel : Tier
{
public int Flügelspannweite { get; set; }
}
In diesem Beispiel enthält die Basis-Klasse „Tier“ die grundlegenden Eigenschaften wie „Alter“, „Name“ und „Geschlecht“. Dann erben die abgeleiteten Klassen „Hund“, „Katze“ und „Vogel“ diese Eigenschaften von der Basis-Klasse und fügen jeweils ihre eigenen spezifischen Eigenschaften wie „Rasse“, „Farbe“ oder „Flügelspannweite“ hinzu.
Form-Klassen: Sie könnten eine Basis-Klasse namens „Form“ erstellen, die grundlegende Eigenschaften wie „Breite“ und „Höhe“ enthält. Dann können Sie abgeleitete Klassen wie „Rechteck“, „Kreis“ und „Dreieck“ erstellen, die diese Eigenschaften erben und spezifische Eigenschaften wie „Radius“, „Seitenlängen“ oder „Winkel“ hinzufügen.
public class Form
{
public double Breite { get; set; }
public double Höhe { get; set; }
}
public class Rechteck : Form
{
public double SeitenlängeA { get; set; }
public double SeitenlängeB { get; set; }
}
public class Kreis : Form
{
public double Radius { get; set; }
}
public class Dreieck : Form
{
public double SeitenlängeA { get; set; }
public double SeitenlängeB { get; set; }
public double SeitenlängeC { get; set; }
public double WinkelA { get; set; }
public double WinkelB { get; set; }
public double WinkelC { get; set; }
}
In diesem Beispiel enthält die Basis-Klasse „Form“ die grundlegenden Eigenschaften wie „Breite“ und „Höhe“. Dann erben die abgeleiteten Klassen „Rechteck“, „Kreis“ und „Dreieck“ diese Eigenschaften von der Basis-Klasse und fügen jeweils ihre eigenen spezifischen Eigenschaften hinzu. „Rechteck“ hat „SeitenlängeA“ und „SeitenlängeB“, „Kreis“ hat „Radius“ und „Dreieck“ hat „SeitenlängeA“, „SeitenlängeB“, „SeitenlängeC“, „WinkelA“, „WinkelB“ und „WinkelC“.
Mitarbeiter-Klassen: Sie könnten eine Basis-Klasse namens „Mitarbeiter“ erstellen, die grundlegende Eigenschaften wie „Name“, „Adresse“ und „Gehalt“ enthält. Dann können Sie abgeleitete Klassen wie „Manager“, „Verkäufer“ und „Buchhalter“ erstellen, die diese Eigenschaften erben und spezifische Eigenschaften wie „Abteilung“, „Umsatz“ oder „Bilanzierung“ hinzufügen.
public class Mitarbeiter
{
public string Name { get; set; }
public string Adresse { get; set; }
public double Gehalt { get; set; }
}
public class Manager : Mitarbeiter
{
public string Abteilung { get; set; }
}
public class Verkäufer : Mitarbeiter
{
public double Umsatz { get; set; }
}
public class Buchhalter : Mitarbeiter
{
public double Bilanzierung { get; set; }
}
In diesem Beispiel enthält die Basis-Klasse „Mitarbeiter“ die grundlegenden Eigenschaften wie „Name“, „Adresse“ und „Gehalt“. Dann erben die abgeleiteten Klassen „Manager“, „Verkäufer“ und „Buchhalter“ diese Eigenschaften von der Basis-Klasse und fügen jeweils ihre eigenen spezifischen Eigenschaften hinzu. „Manager“ hat „Abteilung“, „Verkäufer“ hat „Umsatz“ und „Buchhalter“ hat „Bilanzierung“.
Fahrzeug-Klassen: Sie könnten eine Basis-Klasse namens „Fahrzeug“ erstellen, die grundlegende Eigenschaften wie „Geschwindigkeit“ und „Anzahl_Räder“ enthält. Dann können Sie abgeleitete Klassen wie „Auto“, „Motorrad“ und „Fahrrad“ erstellen, die diese Eigenschaften erben und spezifische Eigenschaften wie „Marke“, „Hubraum“ oder „Gangschaltung“ hinzufügen.
public class Fahrzeug
{
public int Geschwindigkeit { get; set; }
public int Anzahl_Räder { get; set; }
}
public class Auto : Fahrzeug
{
public string Marke { get; set; }
public int Hubraum { get; set; }
}
public class Motorrad : Fahrzeug
{
public string Marke { get; set; }
public int Hubraum { get; set; }
public bool HatHelm { get; set; }
}
public class Fahrrad : Fahrzeug
{
public int Anzahl_Gänge { get; set; }
public bool HatKlingel { get; set; }
}
In diesem Beispiel enthält die Basis-Klasse „Fahrzeug“ die grundlegenden Eigenschaften wie „Geschwindigkeit“ und „Anzahl_Räder“. Dann erben die abgeleiteten Klassen „Auto“, „Motorrad“ und „Fahrrad“ diese Eigenschaften von der Basis-Klasse und fügen jeweils ihre eigenen spezifischen Eigenschaften hinzu. „Auto“ und „Motorrad“ haben „Marke“ und „Hubraum“, wobei „Motorrad“ auch eine Eigenschaft „HatHelm“ hat. „Fahrrad“ hat eine Eigenschaft „Anzahl_Gänge“ und eine Eigenschaft „HatKlingel“.
Diese Beispiele zeigen, wie Vererbung in C# eingesetzt werden kann, um eine hierarchische Struktur von Klassen zu erstellen und den Code wiederverwendbar und effizienter zu gestalten. Durch Vererbung können Sie Ihren Code verbessern und vereinfachen, indem Sie gemeinsame Eigenschaften und Methoden in einer Basis-Klasse definieren und sie dann in abgeleiteten Klassen wiederverwenden.
Fazit: C# Vererbung ist ein wichtiger Mechanismus in der objektorientierten Programmierung, der die Wiederverwendbarkeit von Code und die Struktur von Klassen verbessert. Es ist wichtig, die Grundlagen der Vererbung zu verstehen und ihre Anwendungsmöglichkeiten in verschiedenen Situationen zu kennen. Durch die Verwendung von Vererbung können Sie effektiver und effizienter programmieren und bessere und wartbarere Code erstellen.
Aufgabe zum Mitmachen:
Erstelle eine Klasse namens „Person“ mit den Eigenschaften „Name“ und „Alter“. Erstelle dann eine abgeleitete Klasse namens „Student“, die diese Eigenschaften erbt und eine zusätzliche Eigenschaft namens „Kurs“ hat. Erstelle schließlich eine Instanz der Klasse „Student“ und gib die Eigenschaften aus.
public class Person
{
public string Name { get; set; }
public int Alter { get; set; }
}
public class Student : Person
{
public string Kurs { get; set; }
}
public class Program
{
static void Main(string[] args)
{
Student s = new Student();
s.Name = "Max Mustermann";
s.Alter = 20;
s.Kurs = "Informatik";
Console.WriteLine("Name: " + s.Name);
Console.WriteLine("Alter: " + s.Alter);
Console.WriteLine("Kurs: " + s.Kurs);
Console.ReadLine();
}
}
/*
Die Ausgabe sieht wie folgt aus:
Name: Max Mustermann
Alter: 20
Kurs: Informatik
*/