De façon analogue aux constructeurs, il est fréquent que plusieurs méthodes d'une classe portent le même nom, aient le même type de retour, chacune ayant soit un nombre d'arguments distinct, soit le même nombre d'arguments, mais des types distincts : on dit que ces méthodes sont homonymes, et que leur nom est surchargé. Dans l'exemple suivant, le nom translater est surchargé, car deux méthodes portent ce nom et ont le même type de retour, void :
package geometrie; class Point { // ... void translater(double dx, double dy) { x = x + dx; // this.x = this.x + dx y = y + dy; } void translater(double d) { translater(d, d); } }
Des méthodes homonymes sont distinguées par leur profil, c'est-à-dire par la liste des types de leurs paramètres. Les profils des méthodes de la classe Point sont respectivement :