Propongo questo semplice quesito: perchè quando eseguo il
programma riportato sotto la sequenza delle stampe e quindi
quella delle chiamata è così?
class Point {
int x, y;
Point(int x, int y) {
this.x = x;
this.y = y;
}
double distance(int x, int y) {
System.out.println("Chiamata a distance(int x, int y).");
int dx = this.x - x;
int dy = this.y - y;
return Math.sqrt(dx*dx+dy*dy);
}
double distance(Point p) {
System.out.println("Chiamata a distance(Point p).");
return distance(p.x, p.y);
}
}
class PointDist {
public static void main(String args[]){
Point p1 = new Point(0,0);
Point p2 = new Point(30,40);
System.out.println("Chiamo p1.distance(p2): " + p1.distance(p2));
System.out.println("Chiamo p1.distance(60,80): " + p1.distance(60,80));
}
}
/*
Per quale motivo tecnico la sequenza delle chiamate è così?
Io mi aspettavo per prime le stampe del tipo "Chiamo p1.distance....."
C:\java_source>java PointDist
Chiamata a distance(Point p).
Chiamata a distance(int x, int y).
Chiamo p1.distance(p2): 50.0
Chiamata a distance(int x, int y).
Chiamo p1.distance(60,80): 100.0
*/
Ringrazio chiunque mi spieghi il motivo tecnico di tutto ciò!
:sexpulp: