Java Mittelstufe Tag 2: Vererbung & Polymorphie

Ziel dieses Tages

Heute wirst du lernen:

Am Ende wirst du in der Lage sein, Klassenhierarchien zu erstellen und Polymorphie effektiv zu nutzen.

Schritt 1: Das extends-Schlüsselwort

Verwende extends, um eine Unterklasse von einer Basisklasse zu erstellen.


class Animal {
    void makeSound() {
        System.out.println("Animal sound");
    }
}

class Dog extends Animal {
    void makeSound() {
        System.out.println("Woof");
    }
}

Erklärung:

Schritt 2: Methodenüberschreibung

Eine Unterklasse kann eine eigene Implementierung einer Methode bereitstellen.


class Dog extends Animal {
    void makeSound() {
        System.out.println("Woof");
    }
}

Erklärung:

Schritt 3: Das super-Schlüsselwort

super bezieht sich auf die Elternklasse und kann verwendet werden, um Methoden oder Konstruktoren der Elternklasse aufzurufen.


class Dog extends Animal {
    void makeSound() {
        super.makeSound(); // ruft Animal makeSound auf
        System.out.println("Woof");
    }
}

Schritt 4: Laufzeit-Polymorphie

Polymorphie erlaubt es, dass eine Elternklassen-Referenz auf ein Kindobjekt zeigt.


Animal myAnimal = new Dog();
myAnimal.makeSound(); // Gibt "Woof" aus

Erklärung:

Übung


class Animal {
    void makeSound() {
        System.out.println("Animal sound");
    }
}

class Dog extends Animal {
    void makeSound() {
        System.out.println("Woof");
    }
}

Aufgabe

Erstelle eine Basisklasse Shape und die Unterklassen Circle und Rectangle mit überschriebenen Methoden.

Schritte:

Beispiel:


class Shape {
    void draw() {
        System.out.println("Zeichne eine Form");
    }
}

class Circle extends Shape {
    void draw() {
        System.out.println("Zeichne einen Kreis");
    }
}

class Rectangle extends Shape {
    void draw() {
        System.out.println("Zeichne ein Rechteck");
    }
}

public class Main {
    public static void main(String[] args) {
        Shape shape1 = new Circle();
        Shape shape2 = new Rectangle();

        shape1.draw(); // Zeichne einen Kreis
        shape2.draw(); // Zeichne ein Rechteck
    }
}