Menu
Coddy logo textTech

Grundlagen der Vererbung (:) Syntax

Teil des Abschnitts Objektorientierte Programmierung der C#-Journey von Coddy — Lektion 19 von 70.

Vererbung ermöglicht es einer Klasse, die Eigenschaften und Methoden einer anderen Klasse zu übernehmen. Anstatt denselben Code neu zu schreiben, erstellen Sie eine Basisklasse (Elternklasse) mit gemeinsamer Funktionalität und erstellen dann abgeleitete Klassen (Kindklassen), die von ihr erben.

In C# verwenden Sie den Doppelpunkt : als Symbol, um Vererbung anzuzeigen:

public class Animal
{
    public string Name { get; set; }
    
    public void Eat()
    {
        Console.WriteLine($"{Name} is eating.");
    }
}

public class Dog : Animal
{
    public void Bark()
    {
        Console.WriteLine($"{Name} says Woof!");
    }
}

Die Klasse Dog erbt alles von Animal. Sie hat Zugriff auf die Eigenschaft Name und die Methode Eat(), ohne sie erneut zu deklarieren, zudem fügt sie ihre eigene Methode Bark() hinzu:

Dog myDog = new Dog();
myDog.Name = "Buddy";
myDog.Eat();   // Ausgabe: Buddy frisst.
myDog.Bark();  // Ausgabe: Buddy sagt Wuff!

C# unterstützt nur Einzelvererbung, was bedeutet, dass eine Klasse von nur einer Basisklasse erben kann. Sie können jedoch Vererbungsketten aufbauen, bei denen eine abgeleitete Klasse zur Basis für eine andere Klasse wird. Dies schafft eine Hierarchie, die reale Beziehungen modelliert und gleichzeitig Ihren Code organisiert und wiederverwendbar hält.

challenge icon

Aufgabe

Einfach

Lassen Sie uns eine Fahrzeughierarchie aufbauen, die zeigt, wie Vererbung es abgeleiteten Klassen ermöglicht, Funktionalitäten einer Basisklasse zu teilen und gleichzeitig ihr eigenes, einzigartiges Verhalten hinzuzufügen.

Sie werden drei Dateien erstellen, um Ihren Code zu organisieren:

  • Vehicle.cs: Definieren Sie eine Vehicle-Klasse im Namespace Transport. Dies wird Ihre Basisklasse sein, die alle Fahrzeuge gemeinsam haben. Sie sollte eine Eigenschaft Brand (string) und eine Eigenschaft Year (int) haben, zusammen mit einer Methode StartEngine(), die "{Brand} engine started." ausgibt.
  • Car.cs: Definieren Sie eine Car-Klasse im Namespace Transport, die von Vehicle erbt. Das Auto fügt seine eigene Eigenschaft NumberOfDoors (int) und eine Methode Honk() hinzu, die "{Brand} goes Beep Beep!" ausgibt.
  • Program.cs: Erstellen Sie in Ihrer Hauptdatei eine Car-Instanz unter Verwendung von Eingabewerten. Setzen Sie deren Eigenschaften (einschließlich der geerbten), und zeigen Sie dann, dass das Auto sowohl seine eigenen Methoden als auch die von Vehicle geerbten Methoden nutzen kann.

Sie erhalten drei Eingaben:

  • Markenname (Brand)
  • Jahr (Year)
  • Anzahl der Türen (Number of doors)

Geben Sie die Informationen des Autos aus und demonstrieren Sie seine Fähigkeiten in diesem Format:

Car: {Brand} ({Year})
Doors: {NumberOfDoors}
{StartEngine output}
{Honk output}

Wenn die Eingaben beispielsweise Toyota, 2022 und 4 sind, sollte die Ausgabe wie folgt aussehen:

Car: Toyota (2022)
Doors: 4
Toyota engine started.
Toyota goes Beep Beep!

Beachten Sie, wie Ihr Car auf die Eigenschaft Brand und die Methode StartEngine() zugreifen kann, obwohl diese in Vehicle definiert sind. Das ist die Stärke der Vererbung – die abgeleitete Klasse erhält automatisch alles von ihrer Basisklasse!

Spickzettel

Vererbung ermöglicht es einer Klasse, Eigenschaften und Methoden von einer anderen Klasse unter Verwendung des Doppelpunkt-Symbols : zu übernehmen:

public class Animal
{
    public string Name { get; set; }
    
    public void Eat()
    {
        Console.WriteLine($"{Name} is eating.");
    }
}

public class Dog : Animal
{
    public void Bark()
    {
        Console.WriteLine($"{Name} says Woof!");
    }
}

Die abgeleitete Klasse (Dog) erbt alle Eigenschaften und Methoden von der Basisklasse (Animal) und kann eigene hinzufügen:

Dog myDog = new Dog();
myDog.Name = "Buddy";
myDog.Eat();   // Vererbte Methode
myDog.Bark();  // Eigene Methode

C# unterstützt nur Einzelvererbung – eine Klasse kann von nur einer Basisklasse erben. Sie können jedoch Vererbungsketten erstellen, um Hierarchien aufzubauen.

Probier es selbst

using System;
using Transport;

class Program
{
    public static void Main(string[] args)
    {
        // Eingabe lesen
        string brand = Console.ReadLine();
        int year = Convert.ToInt32(Console.ReadLine());
        int doors = Convert.ToInt32(Console.ReadLine());
        
        // TODO: Erstelle eine Car Instanz
        
        // TODO: Setze die Eigenschaften des Autos (Brand, Year, NumberOfDoors)
        
        // TODO: Gib die Informationen des Autos im erforderlichen Format aus:
        // Car: {Brand} ({Year})
        // Doors: {NumberOfDoors}
        // Rufe dann StartEngine() und Honk() auf
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Objektorientierte Programmierung