Credo che dovresti visionare questo capitolo della Java Language Specification.

C'è un ben preciso procedimento che viene seguito dal compilatore per decidere quale metodo invocare quando incontra una chiamata.

Nel libro "Il Linguaggio Java, Manuale Ufficiale" di Arnold, Gosling, Holmes questo procedimento è sintetizzato molto bene... se me ne ricordo, appena torno a casa cercherò quel capitolo e lo riporterò in questa discussione.

Ciao.