Hallo, ich schaue mir gerade das BridgePattern (GOF) an.
Das Pattern wird verwendet um eine Abstraktion von der Implementierung zu trennen.
Ich verstehe hier wiederum die Verwendung von super nicht:
Also zunächst eine der Implementierungen (ein grüner Kreis):
Hier ist die abstrakte Klasse Shape, die DrawAPI - Objekte verwendet:
Schließlich werden aber nun konkrete Circle-Objekte durch eine beerbende Klasse
erzeugt:
Jetzt die Frage: Warum rufe ich extra die Basisklasse mit super(drawApi) auf um dort
das DrawApi-Objekt an die Instanzvariable zu übergeben. Warum dieser "Umweg" mit super, astatt, dass ich this.drawApi = drawApi innerhalb Circle schreibe??
Vielen Dank, Iago.
Das Pattern wird verwendet um eine Abstraktion von der Implementierung zu trennen.
Ich verstehe hier wiederum die Verwendung von super nicht:
Also zunächst eine der Implementierungen (ein grüner Kreis):
Java:
public class GreenCircle implements DrawAPI {
@Override
public void drawCircle(int radius, int x, int y) {
System.out.println("Drawing Circle[ color: green, radius: " + radius+ ", x: " + x + ", "+ y +"]");
}
Hier ist die abstrakte Klasse Shape, die DrawAPI - Objekte verwendet:
Java:
public abstract class Shape {
protected DrawAPI drawAPI;
protected Shape(DrawAPI drawAPI) {
this.drawAPI = drawAPI;
}
public abstract void draw();
}
Schließlich werden aber nun konkrete Circle-Objekte durch eine beerbende Klasse
erzeugt:
Java:
public class Circle extends Shape {
private int x, y, radius;
public Circle(int radius, int x, int y, DrawApi drawApi) {
super(drawApi);
int radius = radius;
int x = x;
int y = y;
}
public void draw() {
drawApi.drawCircle(radius, x, y);
}
}
Jetzt die Frage: Warum rufe ich extra die Basisklasse mit super(drawApi) auf um dort
das DrawApi-Objekt an die Instanzvariable zu übergeben. Warum dieser "Umweg" mit super, astatt, dass ich this.drawApi = drawApi innerhalb Circle schreibe??
Vielen Dank, Iago.