BESTE WEBSITE FÜR WEBENTWICKLER
C# Sprache. W3Schools auf Deutsch. Unterricht für Anfänger

Ua En Es

C# -Vererbung


Vererbung (abgeleitete Klasse und Basisklasse)

In C# ist es möglich, Felder und Methoden von einer Klasse auf eine andere zu vererben. Wir unterteilen das „Vererbungskonzept“ in zwei Kategorien:

  • Abgeleitete Klasse (untergeordnet) – die Klasse, die von einer anderen Klasse erbt
  • Basisklasse (übergeordnet) – die Klasse, von der geerbt wird

Um von einer Klasse zu erben, verwenden Sie das Symbol :.

Im folgenden Beispiel erbt die Klasse Car (untergeordnet) die Felder und Methoden vom Vehicle Klasse (übergeordnet):

Beispiel

class Vehicle  // Basisklasse (übergeordnet)
{
  public string brand = "Ford";  // Vehicle feld
  public void honk()             // Vehicle methode
  {                    
    Console.WriteLine("Tuut, tuut!");
  }
}

class Car : Vehicle  // abgeleitete Klasse (Kind)
{
  public string modelName = "Mustang";  // Car feld
}

class Program
{
  static void Main(string[] args)
  {
    // Erstellen Sie ein myCar-Objekt
    Car myCar = new Car();

    // Rufen Sie die honk()-Methode (aus der Vehicle-Klasse) für das myCar-Objekt auf
    myCar.honk();

    // Zeigen Sie den Wert des Markenfelds (aus der Klasse „Vehicle“) und den Wert des modelName aus der Klasse „Car“ an
    Console.WriteLine(myCar.brand + " " + myCar.modelName);
  }
}

Beispiel ausführen »

Warum und wann sollte „Vererbung“ verwendet werden?

Es ist nützlich für die Wiederverwendbarkeit von Code: Verwenden Sie Felder und Methoden einer vorhandenen Klasse wieder, wenn Sie eine neue Klasse erstellen.

Tipp: Werfen Sie auch einen Blick auf das nächste Kapitel, C# Polymorphismus, in dem geerbte Methoden zur Ausführung verschiedener Aufgaben verwendet werden.


Das versiegelte Schlüsselwort

Wenn Sie nicht möchten, dass andere Klassen von einer Klasse erben, verwenden Sie das Schlüsselwort sealed:

Wenn Sie versuchen, auf eine sealed-Klasse zuzugreifen, generiert C# einen Fehler:

sealed class Vehicle
{
...
}

class Car : Vehicle
{
...
}

Die Fehlermeldung wird etwa so aussehen:

'Car': cannot derive from sealed type 'Vehicle'