BlueJ 2 Konstruktoren?
Ich muss in BlueJ einen Punkt schreiben, bei dem es am Anfang 2 Möglichkeiten gibt: Entweder der Punkt hat die Anfangskoordinaten x=0 y=0 (also leerer Konstruktor?) oder Koordinaten, die man am Anfang eingeben kann. Dafür brauche man doch 2 Konstruktoren oder? Wie schreibe ich das am besten? Hab Mal so angefangen, aber jetzt wird nur der untere Konstruktor benutzt.
2 Antworten
Normalerweise macht man das, indem man den einen Konstruktor vom anderen Konstruktor aus aufruft.
public class Punkt {
double x;
double y;
public Punkt() {
this(0, 0);
}
public Punkt(double x, double y) {
this.x = x;
this.y = y;
}
}
Deine Lösung ist fast richtig. Deine Zuweisungen in Konstruktor 2 sind nur noch falsch. Da du ja den Wert der Parameter an die Felder geben möchtest, müssen die Parameter rechts vom Zuweisungsoperator stehen und die Feldnamen links.
x = xs;
y = ys;
Es ist im Übrigen üblich, Klassennamen nicht komplett in Großbuchstaben zu schreiben (d.h. der Name Punkt würde eher nach üblicher Konvention verwendet werden, als PUNKT).
Welchen Konstruktor du später nutzt, entscheidet sich bei Instanzierung des Objekts und der Argumentenliste.
Punkt punkt1 = new Punkt(); // use first constructor
Punkt punkt2 = new Punkt(2, 3); // use second constructor