# Vererbung Weitergeben von bereits geschriebenen Code an Subklassen. Sinnvoll auch zum Aufstellen einer Vererbungshierarchie. --- ## Deklaration ```java class Shape { public String toString() { return "Shape"; } } class Rectangle extends Shape { public String toString() { return "Rectangle"; } } class Circle extends Shape { public String toString() { return "Circle"; } } ``` --- ## Benutzung ```java // In main... Shape shape = new Shape(); Rectangle rectangle = new Rectangle(); shape.toString(); rectangle.toString(); shape = rectangle; shape.toString(); ``` --- # Aufgaben * Schreibe eine Klasse `Cow`, welche dieselben Methoden hat wie ein `Sheep` * Ergänze `Cow` und `Sheep` um eine Methode `String makeNoise()`, ein `Schaf` soll `"Mäh"` zurückgeben, eine `Cow` `"Muh"`. * Schreibe nun eine Klasse `Animal`. Von dieser Klasse sollen `Sheep` und `Cow` erben. Alle Methoden die bei `Sheep` und `Cow` genau gleich sind, sollen nun in die Superklasse `Animal` verschoben werden. * Ändere den `Shepherd` so ab, dass er nur noch `Animal` akzeptiert.