2.0 KiB
2.0 KiB
Polymorphie und Vererbung
Typ und Implementation
Der Typ ist die Außenansicht auf einen Dienstleister.
- Welche Operationen gibt es?
- Wie rufe ich diese auf?
Die Implementation ist die Innenansicht auf einen Dienstleister.
- Wie wird eine Operation umgesetzt?
- Welche Felder habe ich?
Klassen und Interfaces
Klassen haben immer eine Doppelrolle, da sie sowohl einen Typ als auch eine Implementation definieren. Interfaces sollten immer nur einen Typ definieren.
Vererbung
Weitergeben von bereits geschriebenen Code an Subklassen. Sinnvoll auch zum Aufstellen einer Vererbungshierarchie.
- Eine Klasse kann erben von: Klassen und abstrakten Klasse
- Ein Interface kann erben von: Interfaces
Deklaration - Klassen
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";
}
}
Deklaration - Interfaces
// Repräsentiert eine 2D Form
interface Form {
double gibFlaeche();
}
// Repräsentiert ein 2D Dreieck
interface Dreieck extends Shape {
double gibHoehe();
}
Benutzung
// 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 einSheep
- Ergänze
Cow
undSheep
um eine MethodeString makeNoise()
, einSchaf
soll"Mäh"
zurückgeben, eineCow
"Muh"
. - Schreibe nun eine Klasse
Animal
. Von dieser Klasse sollenSheep
undCow
erben. Alle Methoden die beiSheep
undCow
genau gleich sind, sollen nun in die SuperklasseAnimal
verschoben werden.