Informatik

Vererbung

Vererbung ist ein mächtiges Konzept der objektorientierten Programmierung, das es ermöglicht, neue Klassen auf Basis bestehender Klassen zu erstellen. Die neue Klasse "erbt" Eigenschaften und Methoden der ursprünglichen Klasse.

Vergleich aus der Natur: Alle Säugetiere haben gemeinsame Eigenschaften (Warmblüter, haben Fell, säugen ihre Jungen). Hunde sind eine spezielle Art von Säugetieren und haben zusätzlich eigene Eigenschaften (bellen, wedeln mit dem Schwanz).

In der Programmierung können wir das genauso machen: Eine allgemeine Klasse Säugetier und spezielle Klassen wie Hund oder Katze, die von Säugetier erben.

Grundkonzept der Vererbung

Basisklasse und abgeleitete Klasse

  • Basisklasse (auch Superklasse oder Elternklasse): Die ursprüngliche Klasse
  • Abgeleitete Klasse (auch Unterklasse oder Kindklasse): Die Klasse, die erbt

Die Vererbungsbeziehung wird in Java mit dem Schlüsselwort extends beschrieben.

classDiagram
    Person <|-- Mitarbeiter
    class Person {
        -name: String
        +setzeName(pName: String)
        +gibName(): String
    }
    class Mitarbeiter {
        -mitarbeiterNummer: int
        +getMitarbeiterNummer(): int
    }

Einfaches Vererbungsbeispiel

Die Basisklasse: Person

Wichtige Vererbungskonzepte

super - Zugriff auf die Basisklasse

Das Schlüsselwort super ermöglicht den Zugriff auf Methoden und Konstruktoren der Basisklasse:

Zugriffsbereiche (Sichtbarkeit)

Zugriffsbereiche bei Vererbung:

  • private: Nur in der eigenen Klasse sichtbar
  • protected: In der eigenen Klasse UND in Unterklassen sichtbar
  • public: Überall sichtbar

Praktisches Beispiel: Formen

Übung: Vererbung verstehen

Gegeben sind die folgenden beiden Klassen. Beantworte die nachstehenden Fragen:

Fragen:

  1. Ist dieser Code gültig? meinAuto.geschwindigkeit = 50;

Ja! Das Attribut geschwindigkeit ist public und wird vererbt.

  1. Ist dieser Code gültig? meinAuto.marke = "Audi";

Nein! Das Attribut marke ist protected und kann nicht von außen zugegriffen werden.

  1. Ist dieser Code gültig? meinAuto.hatKofferraum = false;

Nein! Das Attribut hatKofferraum ist private und nicht von außen sichtbar.

Teste-Dich-Projekt: Mitarbeiter-Hierarchie

Erstelle ein Mitarbeiter-Verwaltungssystem mit Vererbung:

  1. Basisklasse Mitarbeiter:

    • Attribute: name, gehalt, mitarbeiterID
    • Methoden: arbeiten(), gehaltserhöhung(betrag)
  2. Unterklasse Entwickler extends Mitarbeiter:

    • Zusätzliches Attribut: programmiersprache
    • Überschriebene Methode: arbeiten() (spezifischer für Entwickler)
    • Neue Methode: neueSpracheLernen(sprache)
  3. Unterklasse Manager extends Mitarbeiter:

    • Zusätzliches Attribut: teamGroesse
    • Überschriebene Methode: arbeiten() (spezifischer für Manager)
    • Neue Methode: teamMeeting()

Testfälle

  • Entwickler kann arbeiten, neue Sprachen lernen und Gehaltserhöhung bekommen
  • Manager kann arbeiten, Team-Meetings leiten und Gehaltserhöhung bekommen
  • Alle Methoden der Basisklasse funktionieren bei beiden Unterklassen

Expertenbereich

Erweiterte Aufgaben:

  • Erstelle eine Klassenhierarchie für verschiedene Tiere (Säugetiere, Vögel, Fische)
  • Implementiere ein Spiel mit verschiedenen Charakter-Klassen (Krieger, Magier, Bogenschütze)
  • Entwerfe ein Fahrzeug-System mit Auto, Motorrad, LKW als Unterklassen

onlineide{url="https://nrw.onlineide.openpatch.org"}

// Hier kannst du die erweiterten Aufgaben bearbeiten
 

:::

:::

Wichtige Vererbungsregeln:

  • Eine Klasse kann nur von einer anderen Klasse erben (Einfachvererbung)
  • Alle Klassen erben automatisch von der Klasse Object
  • Private Attribute werden nicht vererbt (nicht sichtbar in Unterklassen)
  • Konstruktoren werden nicht vererbt, aber können mit super() aufgerufen werden
Vererbung