Was ist falsch an dem folgendem Codesegment?
Point meinPoint = new Point(); // einen Punkt bei x=0, y=0 konstruieren meinPoint.move(); // den Punkt auf eine neue Position verschieben
Die zweite Anweisung ruft die Methode move()
von meinPoint
auf,
aber sie stellt keine Daten bereit, wohin der Punkt zu verschieben ist.
In diesem Fall ist die Angabe, welche Methode auszuführen ist, nicht genug.
Die Methode braucht Daten darüber, was zu tun ist.
Wenn wir uns die Beschreibung der Klasse Point
ansehen,
wird die move()
Methode folgendermaßen beschrieben:
// (x,y) eines point-Objekts ändern
public void move(int x, int y)
Die Beschreibung besagt, dass die Methode zwei Parameter benötigt:
int
sein. Er wird der neue Wert für x sein.
int
sein. Er wird der neue Wert für y sein.
Die Punktnotation wird verwendet, um anzugeben welches Objekt und welche Methode dieses Objekts auszuführen ist. Die Parameterliste der Methode versorgt die Methode mit Daten. Hier sind einige Beispiele:
Point pointA = new Point(); Point pointB = new Point( 94, 172 ); pointA.move( 45, 82 ); pointB.move( 24-12, 34*3 - 45 ); int x = 87; int y = 55; pointA.move( x, y ); pointB.move( x - 4, y * 2 + 34 );
Wir können Ausdrücke in Parameterlisten angeben, solange der Ausdruck den Datentyp ergibt, den die Methode erwartet. Die Ausdrücke werden ausgewertet (unter der Verwendung der üblichen Regeln), bevor die Methode zu starten beginnt.
Was ist die Position von pointB
nach dem folgendem:
pointB.move( 24-12, 34*3 - 45 );