Programmieren_2/polymorphie.md

1.7 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.


Deklaration

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

// 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.