Vererbung Wie auf Variablen der Superklasse zugreifen?

asyoulikeit

Mitglied
Hallo,

ich habe mal wieder ein Java-Anfänger Problem. Thema ist diesmal Vererbung.

Gegeben sind mir folgende drei Klassen:

Java:
public class Punkt {
    
    public final double x;
    public final double y;

    public Punkt(double x, double y) {
        this.x = x;
        this.y = y;
    }

... und ein paar Methoden

Java:
public class Vektor {


    public final Punkt origin;
    public final double length;
    public final double angle;
    public final Punkt tip;

    public Vektor(Punkt origin, double length, double angle) {
        this.origin = origin;
        this.length = Math.abs(length);  
        this.angle =  (length > 0) ? angle : addAngles(angle, 180);
        tip = (new Punkt(origin.x + length, origin.y + 0)).rotate(angle, origin);
    }

... auch hier ein paar Methoden

Java:
public class Form {

    private Punkt origin;
    private double angle;
     
    public Form(Punkt origin, double angle) {
        this.origin = origin;
        this.angle = angle;
    }

    public Form(Punkt origin) {
        this(origin, 0);
    }

... und hier ebenfalls.

Ich soll jetzt dazu eine Klasse Rechteck schreiben, die von Form erbt und verschiedenes berechnet, wie Umfang, Fläche und Eckpunkte
Gegeben ist der Mittelpunkt, Länge und Breite (später auch der Winkel zur x-Achse, aber den lass ich jetzt erstmal außen vor)

Mein Problem ist jetzt, dass ich nicht weiß, wie ich an die x und y Werte des Mittelpunkts komme. Bisher habe ich dieses hier:

Java:
public class Rechteck extends Form {

    private double height;
    private double width;

    public Rechteck(Punkt origin, double width, double height, double angle) {
        super(origin, angle);
        this.width = width;
        this.height = height;
    }

    public Rechteck (Punkt origin, double width, double height) {
        super(origin);
        this.width = width;
        this.height = height;
    }

    public double width() {
		return width;
	}

    public double heigth() {
		return height;
	}

    public Punkt punktA() {
		Punkt punktA = new Punkt(x - (width / 2), y - (height / 2));
		return punktA;
	}

usw. usw.

Und genau hier hakt es. Egal was ich versuche (x, origin.x, Rechteck.x, origin(x)), ich bekomme immer ein "cannot find symbol".
Wie muss ich x und y ansprechen? Ach ja, Getter und Setter darf ich nicht verwenden.
Wäre super, wenn mir hier jemand weiterhelfen könnte.
 

rme

Top Contributor
"origin" in Form ist private. Damit die Subklassen darauf zugreifen können, muss es entweder protected oder public sein - oder du brauchst eine get-Methode dafür.
 
Zuletzt bearbeitet:

Tobse

Top Contributor
Das kannst du nicht. [c]origin[/c] ist
Code:
private
in Form, d.h. keine andere Klasse kann darauf zugreiffen (ergo wird sie auch nicht vererbt). Wenn du sie
Code:
protected
machst, kann die Tochterklasse darauf zugreiffen.

[EDIT]da war wohl jemand schneller....[/EDIT]
 
Zuletzt bearbeitet:

asyoulikeit

Mitglied
Dann hab ich jetzt ein Problem, denn Punkt, Vektor und Form sind mir vorgegeben und dürfen von mir nicht verändert werden.

Hat vielleicht jemand eine andere Idee, wie ich mit den gegebenen Klassen an die Eckpunkte kommen könnte?
 

rme

Top Contributor
Moment - du willst an die *Eckpunkte*? Form speichert ja nur den Ursprung, also den Mittelpunkt. Die Eckpunkte wird deine Klasse dynamisch berechnen müssen. Am besten im Konstruktor einmalig berechnen, dann kannst du sie als Instanzvariablen speicher und bei Bedarf darauf zugreifen. Aber dann musst du dran denken, die Punkte immer zu aktualisieren, falls irgendwelche Operationen gemacht werden. Also am besten eine private Methode hinzufügen, die die Eckpunkte berechnet und als Instanzvariablen speichert, und diese im Konstruktor sowie nach jeder Änderung aufrufen.
 

Tobse

Top Contributor
Dann hab ich jetzt ein Problem, denn Punkt, Vektor und Form sind mir vorgegeben und dürfen von mir nicht verändert werden.

Hat vielleicht jemand eine andere Idee, wie ich mit den gegebenen Klassen an die Eckpunkte kommen könnte?

Überschreibe die instanzvariable

Java:
public class Rechteck extends Form
{
    private Punkt origin;
    public Rechteck(origin, ..., double angle)
    {
        super(origin, angle);
        this.origin = origin;
        ...
    }
}
 
Zuletzt bearbeitet:

asyoulikeit

Mitglied
@rme: Genau das will ich in public Punkt punktA() ja tun, also die Eckpunkte in Abhängigkeit vom Mittelpunkt berechnen, aber ich komme nicht an x und y ran, weil sie in Form private sind.

@Tobse: Das funktioniert leider nicht. Bekomme schon in Deiner Zeile 7 die Fehlermeldung "origin has private access in Form
 

rme

Top Contributor
Hat die Klasse Form wirklich nur die 13 Zeilen, die du oben gezeigt hast? Da fehlt ja noch eine schließende Klammer, vielleicht sind da noch mehr Methoden? Falls es nämlich kein getOrigin oder Ähnliches gibt, ist es völlig sinnlos, dass die Klasse origin speichert - man kommt nämlich nie wieder ran.
 

asyoulikeit

Mitglied
die hat noch jede Menge Methoden. Ich dachte nur, dass davon keine für mein Problem relevant wäre und hab sie deshalb nicht mitkopiert. Hier ist die komplette Klasse Form:

Java:
public class Form {

    private Punkt origin;
    private double angle;
     
    public Form(Punkt origin, double angle) {
        this.origin = origin;
        this.angle = angle;
    }

    public Form(Punkt origin) {
        this(origin, 0);
    }

    public void rotate(double angle, Punkt centre) {
        origin = origin.rotate(angle, centre);  // points are immutable!
        this.angle = Vektor.addAngles(this.angle, angle); 
        // rest to be defined in sub-classes
    }

    public void rotate(double angle) {
        rotate(angle, origin);
        // rest to be defined in sub-classes
    }

    public void scale(double factor) {
        // to be defined in sub-classes
    }

    public void translate(Vektor vector) {
        origin = origin.translate(vector.freeVectorTip());  // points are immutable!
        // rest to be defined in sub-classes
    }

    public Punkt origin() {
        return origin;
    }

    public double angle() {
        return angle;
    }

    public String toString() {
        return "origin: " + origin + ", angle: " + String.format("%.3f", angle);
        // rest to be defined in sub-classes 
    }

    public void report() {
        System.out.println(this.getClass().getSimpleName() + ": " + this);
    }
        
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Vererbung Variablen aus Superklasse übernehmen Java Basics - Anfänger-Themen 2
R Vererbung Übergabe von Variablen der Superklasse an Subklasse mit "extends" Java Basics - Anfänger-Themen 5
O Welcher Object-Lock-Pool bei static Variablen? Java Basics - Anfänger-Themen 3
T variablen klassen übergreifend Java Basics - Anfänger-Themen 12
T Variablen Java Basics - Anfänger-Themen 1
N Verständnis Frage zu Variablen Java Basics - Anfänger-Themen 3
M Aufsummieren von variablen Wertegrößen Java Basics - Anfänger-Themen 17
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
ashi Variablen aufrufen Java Basics - Anfänger-Themen 17
U Warum kann ich, auf private Variablen zugreifen, wenn ich ein Objekt in der Klasse, die private Variablen hat erstelle und dort drauf zugreifen will? Java Basics - Anfänger-Themen 7
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
A 2 Strings vergleichen in einer methode wenn man mit Globalen variablen arbeitet Java Basics - Anfänger-Themen 12
C Konstruktoren und Variablen Java Basics - Anfänger-Themen 42
F Auf Variablen eines Konstruktors zugreifen Java Basics - Anfänger-Themen 4
N Variable aus anderen Variablen in statischer Klasse berechnen/abspeichern? Java Basics - Anfänger-Themen 4
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
B Variablen Variablen übertragen ohne Klassen Java Basics - Anfänger-Themen 5
B Methoden Methoden haben kein Zugriff auf variablen Java Basics - Anfänger-Themen 4
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
Arif Vererbung Methodenvererbung mit finalen Variablen Java Basics - Anfänger-Themen 1
M Wie kann ich ein Objekt erstellen, wenn sich der Klassenname in einer Variablen befindet? Java Basics - Anfänger-Themen 10
S Variablen Variablen in einer Schleife erstellen lassen Java Basics - Anfänger-Themen 11
J Ich brauche Hilfe bei einem Code (Variablen speichern) Java Basics - Anfänger-Themen 29
F Variablen Werte einer Klasse überschreiben Java Basics - Anfänger-Themen 4
N Speichern von Werten in Variablen nach Schließen des Programms Java Basics - Anfänger-Themen 3
J Frage dazu Variablen klassenübergreifend zu verändern Java Basics - Anfänger-Themen 22
M Java Instanz-Variablen ? Java Basics - Anfänger-Themen 3
B Variablen von Methoden übertragen Java Basics - Anfänger-Themen 2
M Variablen umbenennen Java Basics - Anfänger-Themen 1
T Körper Brechnung - Lokale Variablen in Methoden übergeben Java Basics - Anfänger-Themen 10
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
mars90 Fehler in der Variablen Deklaration Java Basics - Anfänger-Themen 8
E Variablen in formatierter Ausgabe Java Basics - Anfänger-Themen 15
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
M Komisches Verhalten der Variablen Java Basics - Anfänger-Themen 6
H Variablen Multiplikation einer inkrementierten Variablen Java Basics - Anfänger-Themen 5
scratchy1 Variablen vertauschen wenn Bedingung "umgedreht" wird Java Basics - Anfänger-Themen 40
J Variablen mit einer anderen Klasse bekannt machen Java Basics - Anfänger-Themen 7
C Methoden Problem beim Speichern von Variablen Java Basics - Anfänger-Themen 1
A Übergreifende Variablen Java Basics - Anfänger-Themen 17
A Variablen Verständnisfrage bzgl. Variablen/Referenzen Java Basics - Anfänger-Themen 3
H Variablen Methode zum Abfragen von Variablen aus Subklassen Java Basics - Anfänger-Themen 9
P Variablen Variablen voneinander abhängig Java Basics - Anfänger-Themen 54
F Liste nach einer Variablen sortieren Java Basics - Anfänger-Themen 6
L Variablen in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
M For-Schleife durch zwei versch. Variablen begrenzen Java Basics - Anfänger-Themen 27
J Klassen Variablen in andere Klassen oder Methoden übernehmen Java Basics - Anfänger-Themen 1
P Liste auslesen und in Variablen speichern Java Basics - Anfänger-Themen 7
temi Redundante Variablen Java Basics - Anfänger-Themen 29
Aprendiendo Zweifel mit versteckter Variablen Java Basics - Anfänger-Themen 16
L Variablen einmal nur zu weisen Java Basics - Anfänger-Themen 62
D Statische Variablen/Methoden Java Basics - Anfänger-Themen 3
R Abfrage von Variablen in Unterklassen einer ArrayList Java Basics - Anfänger-Themen 9
M Listener für Button - Wert von Variablen verändern Java Basics - Anfänger-Themen 14
S Vererbung Variablen klassenübergreifend nutzen Java Basics - Anfänger-Themen 42
R Auf Variablen einer anderen Klasse zugreifen? Java Basics - Anfänger-Themen 1
D Fehlermeldung obwohl Variablen bereits deklariert sind? Java Basics - Anfänger-Themen 14
E 2 Probleme - Datum & private finale Variablen Java Basics - Anfänger-Themen 5
Aruetiise Variablen JFrame und Variablen Java Basics - Anfänger-Themen 3
L Variablen dekleration + reset Java Basics - Anfänger-Themen 16
T Übernahme einer Variablen im ActionListener/ActionEvent Java Basics - Anfänger-Themen 2
D Kapselung final Variablen mit Getter? Java Basics - Anfänger-Themen 2
C Variablen von einem JFrame in einen anderen übertragen Java Basics - Anfänger-Themen 3
P Interface Variablen-Inhalte werden nicht übergeben Java Basics - Anfänger-Themen 3
C Variablen in Schleifen außerhalb verwenden Java Basics - Anfänger-Themen 2
S Variablen Flexible Variablen Namen Java Basics - Anfänger-Themen 3
R Erste Schritte 3 Variablen hochzählen lassen Java Basics - Anfänger-Themen 1
RowdyN Variablen Variablen beliebig benennen? Java Basics - Anfänger-Themen 6
S OOP Variablen zwischen mehreren Klassen Java Basics - Anfänger-Themen 11
T Koordinatensystem zeichnen - Variablen merken? Quadratische Funktion zeichnen? Java Basics - Anfänger-Themen 5
H Variablen einer Schleife zwischenspeichern Java Basics - Anfänger-Themen 2
P Klassen Variablen von einer Klasse zur anderen Java Basics - Anfänger-Themen 5
H Objekt überschreibt Variablen vorheriger Objekte Java Basics - Anfänger-Themen 2
P Variablen in Excel speichern Java Basics - Anfänger-Themen 6
S PHP Aufruf mit mehreren Variablen Java Basics - Anfänger-Themen 2
F Variablen unterschiedlicher Datentypen Java Basics - Anfänger-Themen 6
S ActionListener und Statische Variablen Java Basics - Anfänger-Themen 4
Arif Vererbung Vererbung Variablen überschreiben Java Basics - Anfänger-Themen 1
L Vergleich zweier Variablen, mit Abweichung Java Basics - Anfänger-Themen 3
P Variablen einer Methode in andere Method übergeben Java Basics - Anfänger-Themen 6
G Variablen Verwendung von Variablen in anderer Klasse Java Basics - Anfänger-Themen 6
P Textfelder in Variablen speichern Java Basics - Anfänger-Themen 13
K arraygröße durch variablen Konstruktor? Java Basics - Anfänger-Themen 7
L Variablen aus TXT Datei auslesen und vergleichen. Java Basics - Anfänger-Themen 5
K Welchen Typ haben Variablen in Default-Methoden und in statischen Methoden in Schnittstellen? Java Basics - Anfänger-Themen 4
K Wieso muss man finale statische Variablen sofort oder eben im Konstruktor initialisieren? Java Basics - Anfänger-Themen 2
L zwei Variablen gleichzeitig übergeben Java Basics - Anfänger-Themen 6
J Vererbung privater Variablen Java Basics - Anfänger-Themen 7
D Klassen Verhalten von Klassenvererbung bei Variablen Java Basics - Anfänger-Themen 1
G Alle Objekte und Variablen automatisch ausgeben Java Basics - Anfänger-Themen 7
S OOP Werte von Vektoren mit 3 Variablen ausgeben lassen Java Basics - Anfänger-Themen 3
A Variablen aus einer Schleife gezielt auslesen Java Basics - Anfänger-Themen 11
A Methoden Zugriff auf eingelesene Variablen in der main Methode (ohne Änderung der Parameterliste) Java Basics - Anfänger-Themen 4
K Enigma, variablen übernehmen Java Basics - Anfänger-Themen 6
F Erste Schritte Dynamische Variablen Java Basics - Anfänger-Themen 15
N Variablen zurück casten Java Basics - Anfänger-Themen 3
M Repräsentation von variablen/OOP Java Basics - Anfänger-Themen 2
B Probleme beim einlesen einer short variablen für einen Array Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben