Point2D

Henri

Bekanntes Mitglied
Hallo Leute diese code gibt mir als Ausgabe [0,0] ich verstehe leider nicht. kann jemandem mir das erklären. Danke

Java:
public class Point2D {
     
       private int x, y;
       public Point2D(int x, int y) {
              x = x;
       }
       
       public String toString() {
       return "[" + x + ", " + y + "]";
       }
       
       public static void main(String []args) {
          Point2D point = new Point2D(10, 20);
          System.out.println(point);
       }

}
 

Joew0815

Bekanntes Mitglied
Die schwere Variante mit Lerneffekt:
Ändere mal "private int x, y;" in "private int a, b;" und überlege dir, warum dies bei "x = x" keinen Kompilerfehler hervorruft.

Die leichte Variante:
Ändere "x = x" in "this.x = x" und verfahre dann mit y genauso. ;)

Die Erklärung ist einfach. Im Anweisungsblock des Konstruktors ist ein lokales x per Parameter definiert. Dein "x = x" tut nichts weiter, als dieser lokalen Variable x die lokale Variable x zuzuweien, was natürlich völlig unnütz ist. Die Membervariable x der Klasse erreichst du nun nur noch mit this.x
 

VirtualIndex

Aktives Mitglied
Du hast vergessen die y-Variable zuzuweisen und dein x wird falsch zugewiesen. x = x bewirkt, dass der Inhalt aus der Variable x aus dem Konstruktor der Variable x zugewiesen wird - es geschieht also nichts.

Du musst das Schlüsselwort "this" verwenden, wenn du gleichnamige Variablen hast.

Java:
      public class Point2D {
              this.x = x;
              this.y = y;
       }

Dadurch weiß er, dass er in den Objektvariablen x und y die Werte aus dem Konstruktor abspeichern soll.
 

Ähnliche Java Themen

Neue Themen


Oben