Zugriff auf Attribut von Oberklasse

Carcharoth

Bekanntes Mitglied
Guten Tag

Ich habe eine Oberklasse die ein Attribut zoomFaktor hält.

Java:
public class OberKlasse {
    private int zoomFaktor;

    OberKlasse() {
        this.zoomFaktor=100;
    }

    public int getZoomFaktor() {
        return zoomFaktor;
    }

    public void setZoomFaktor(int zoomFaktor) {
        this.zoomFaktor = zoomFaktor;
    }
}

Davon erben eine Klasse SkizzeA und eine Klasse SkizzeB die beide den zoomFaktor benutzen.

Java:
public class SkizzeA extends OberKlasse {
    public void meldeDich() {
        System.out.println("skizzeA hat den Zoomfaktor " + this.getZoomFaktor());
    }
    
    public static void main(String[] args) {
        SkizzeA skizzeA = new SkizzeA();
        skizzeA.meldeDich();
        SkizzeB skizzeB = new SkizzeB();
        skizzeB.meldeDich();
        
        skizzeA.setZoomFaktor(99);
        
        skizzeA.meldeDich();
        skizzeB.meldeDich();
    }
}

Java:
public class SkizzeB extends OberKlasse {
    public void meldeDich() {
        System.out.println("skizzeB hat den Zoomfaktor " + this.getZoomFaktor());
    }
}

Mein Problem ist, dass ich den Wert des zoomFaktors immer nur über eine Instanz von SkizzeA oder von SkizzeB setzen kann.
Dann steht aber der Wert in der anderen Klasse nicht zur Verfügung.
Übrigens, ich möchte verhindern, dass die Oberklasse instanziiert werden muss.

Danke und Gruss
 
Nein, in meinem Fall nicht. Denn die beiden Unterklassen SkizzeA und Skizze B gehören zu einer gemeinsamen Grafik und müssen daher simultan rauf- oder runtergezoomt werden.
 
Nein, in meinem Fall nicht. Denn die beiden Unterklassen SkizzeA und Skizze B gehören zu einer gemeinsamen Grafik und müssen daher simultan rauf- oder runtergezoomt werden.
Dann wäre es Aufgabe der gemeinsamen Grafik, den Zoom-Faktor synchron zu halten. Ich weiß nicht, mit welchm Framework Du unterwegs bist, aber in der Regel brauchst Du den Zoom-Faktor beim Zeichnen nicht zu berücksichtigen, wenn Du den Grafik-Kontext skalierst.
 
Höchstwahrscheinlich ist in dem Fall dann auch Vererbung der Falsche Weg, und Komposition wäre besser geeignet.
 
Es geht mir auch gar nicht darum, dass es ein zoomFaktor ist, es könnte auch ein x-beliebiger Parameter der einfach für alle Kindklassen zur Verfügung stehen soll.

Das mit der Komposition kenn ich nicht. Ich werde es mir anschauen.
 
'Oberklasse' kann eine Methode protected int getZoom() bereitstellen. Diese Methode kann dann nur von den erbenden Klassen benutzt werden.

Aber ich denke auch, daß du über deine Vererbungshierarchie noch einmal nachdenken solltest. Mir deucht, daß da einiges durcheinandergeraten ist.
 

Zurück
Oben