Wie behebe ich diesen Fehler im Java Editor?
Hey,
ich habe folgende Fehlermeldung bekommen und weiß nicht wie ich den Fehler beheben kann.
Wahrscheinlich ist es wieder ganz einfach aber ich komme nicht drauf.
Kann mir hier vielleicht jemand weiterhelfen?
Liebe Grüße
Christopher
5 Antworten
Setze das Feld zeichenFenster in Haus entweder auf protected:
protected JFrame zeichenFenster;
damit es von HausMitGarage geerbt wird oder nutze den Parameter pZeichenFenster in den Zeilen 11 und 12. Der erste Lösungsweg wäre zu bevorzugen.
Vergleiche mal den Konstruktor in deiner Rechteck-Klasse mit diesem Aufruf. Die Argumentenliste wird auf die Parameter nicht passen. Es könnte bspw. ein Argument fehlen oder nicht den erwartetem Typ entsprechen.
zeichenFenster ist privat und somit auch in der Tochterklasse nicht erreichbar. Musst du protected machen.
Danke für die Antwort.
Und wie funktioniert das ?
Na da wird doch private int zeichenFenster; oder sowas in die Richtung stehen. Und statt private schreibst du halt protected.
Wie behebe ich diesen Fehler im Java Editor?
Du willst "zeichenFenster" nutzen, welches Teil der vererbenden Klasse "Haus" ist. Die Variable ist jedoch private und kann somit nicht von HausMitGarage verwendet werden.
Du musst die Sichtbarkeit der Variable anpassen, z.B. protected, oder das ganze anders Strukturieren
https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

Vermutlich versucht eine Methode "zeichenFenster" auf eine private Variable oder Methode von "Haus" zuzugreifen.
Edit: zeichenFenster ist die private variable. Die musst du also public stellen, oder protected, wenn Haus und HausMitGarage im selben Package liegen.
Ganz banal würde ich darauf tippen, dass du einen Tippfehler hast.
Es muss "pZeichenFenster" heissen und nicht "zeichenFenster"
Ich habe noch ein anderes Problem. Vielleicht kannst du mir dabei auch noch einmal helfen:
HausMitGarage.java:11:14: error: constructor Rechteck in class Rechteck cannot be applied to given types;
garage = new Rechteck (zeichenFenster,xPos+groesse*2,yPos-groesse*3,groesse*1,Color.gray);
Was ist da jetzt genau die Ursache und die Lösung?
LG