Menu
Coddy logo textTech

Grundlegende Vererbung (extends)

Teil des Abschnitts Objektorientierte Programmierung der Java-Journey von Coddy. Lektion 20 von 87.

Vererbung ist eine der Kernsäulen der OOP. Sie ermöglicht es einer Klasse, die Eigenschaften und Methoden einer anderen Klasse zu übernehmen, was die Wiederverwendung von Code fördert und eine natürliche Hierarchie zwischen Klassen etabliert.

In Java erstellen Sie eine Vererbungsbeziehung mit dem Schlüsselwort extends. Die Klasse, die erbt, wird als Subklasse (oder Kindklasse) bezeichnet, und die Klasse, von der geerbt wird, ist die Superklasse (oder Elternklasse).

public class Animal {
    private String name;
    
    public Animal(String name) {
        this.name = name;
    }
    
    public void eat() {
        System.out.println(name + " is eating");
    }
    
    public String getName() {
        return name;
    }
}

public class Dog extends Animal {
    public Dog(String name) {
        super(name);  // Ruft den Konstruktor der Elternklasse auf
    }
    
    public void bark() {
        System.out.println(getName() + " says woof!");
    }
}

Die Klasse Dog erbt automatisch die Methode eat() und die Methode getName() von Animal. Sie kann auch eigene Methoden wie bark() definieren:

Dog myDog = new Dog("Buddy");
myDog.eat();   // Geerbt: "Buddy is eating"
myDog.bark();  // Eigene Methode: "Buddy says woof!"

Stell dir Vererbung als eine „ist-ein“-Beziehung vor. Ein Dog ist ein Animal, daher ergibt es Sinn, dass Dog Animal erweitert. Diese Beziehung ermöglicht es dir, spezialisierte Klassen zu erstellen, die gemeinsame Funktionalität teilen und gleichzeitig ihr eigenes einzigartiges Verhalten hinzufügen.

challenge icon

Aufgabe

Einfach

Erstelle ein einfaches Fahrzeugsystem, das Vererbung in der Praxis demonstriert. Du erstellst eine übergeordnete Klasse, die gemeinsame Eigenschaften von Fahrzeugen enthält, und eine untergeordnete Klasse, die sie um spezielles Verhalten erweitert.

Du organisierst deinen Code auf drei Dateien verteilt:

  • Vehicle.java: Erstelle die übergeordnete Klasse, die ein beliebiges Fahrzeug darstellt. Sie sollte Folgendes enthalten:
    • Ein privates Feld für die brand des Fahrzeugs (String)
    • Einen Konstruktor, der den Markennamen entgegennimmt und ihn dem Feld zuweist. (Hier ist kein Aufruf von super() erforderlich, da Vehicle an der Spitze der Hierarchie steht.)
    • Eine Methode getBrand(), die die Marke zurückgibt
    • Eine Methode start(), die Folgendes ausgibt: [brand] is starting
  • Motorcycle.java: Erstelle eine Unterklasse, die Vehicle erweitert. Ein Motorrad ist ein Fahrzeug, daher ist diese „ist-ein“-Beziehung ein geeigneter Anwendungsfall für Vererbung. Deine Motorcycle sollte:
    • extends verwenden, um von Vehicle zu erben
    • Einen Konstruktor haben, der die Marke entgegennimmt und sie mit super(brand) an die übergeordnete Klasse übergibt
    • Eine eigene Methode wheelie() hinzufügen, die Folgendes ausgibt: [brand] is doing a wheelie!
  • Main.java: Führe alles zusammen, indem du ein Motorcycle-Objekt erstellst und sowohl geerbtes als auch eigenes Verhalten demonstrierst. Du erhältst eine Eingabe: den Markennamen. Gib zwei Zeilen aus, indem du Folgendes aufrufst:
    • Die geerbte Methode start()
    • Die eigene Methode wheelie() von Motorcycle

Du erhältst eine Eingabe: den Markennamen (String) für dein Motorrad.

Beachte, dass deine Motorcycle automatisch Zugriff auf start() und getBrand() hat, ohne diese neu schreiben zu müssen – das ist die Stärke der Vererbung!

Probier es selbst

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String brand = scanner.nextLine();
        
        // TODO: Erstelle ein Motorcycle-Objekt mit der brand
        
        // TODO: Rufe die geerbte start()-Methode auf
        
        // TODO: Rufe die wheelie()-Methode 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

Übe selbstständig: Online-Java-Compiler