58 lines
1.3 KiB
Markdown
58 lines
1.3 KiB
Markdown
<!--
|
|
title: Vererbung
|
|
description: Folien für Vererbung in Programmieren 1
|
|
url: https://git.henriburau.de/tutorien/programmieren-1
|
|
header: Programmieren 1 **Tutorium**
|
|
footer: Henri Burau und Eva Meinen
|
|
-->
|
|
|
|
# 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.
|