Quando tu richiami la funzione distance(Point p) essa al suo interno effettua una chiamata alla funzione che accetta 2 interi. Quindi la sequenza di chiamate è la seguente:
codice:
Point p = new Point(5, 6);
distance(p);

--------------

1) entro nella funzione distance(Point p)
2) entro nella funzione distance(int x, int y)
Alla fine, quando ho il risultato, posso completare l'istruzione System.out.println().


Ciao.