FabioJ ha scritto:
Comunque una risposta ad intuito e non a caso la do.
A.prova(Object)
Sì, esatto.
In:
Object o = new Double(12);
a.prova(o);
Al compilatore NON importa cosa viene assegnato alla variabile
o. In questo caso noi lo sappiamo che viene sempre istanziato un Double. Ma in generale il "flusso" di esecuzione di un codice potrebbe essere complesso, la scelta del tipo da istanziare potrebbe dipendere da altre variabili o l'oggetto da passare a prova potrebbe arrivare a sua volta da un parametro. Insomma, il compilatore NON "sa" e non usa questa informazione per la risoluzione del overloading.
Per il compilatore il tipo "statico" dell'argomento è quello della VARIABILE. La variabile è di tipo
Object, quindi questo è il tipo dell'argomento usato per scegliere la signature (la firma del metodo) da invocare.
Ora: in A esiste/esistono metodi che sono in grado di ricevere un Object? Sì, esiste solo il prova(Object), questo è l'UNICO applicabile. E quindi è quello invocato. Stop, tutto qui.