Tipo apparente e tipo effettivo: un esempio 2
Poly p1 = new DensePoly();
il compilatore controlla che il metodo degree sia definito per il tipo apparente Poly di p1
- guardando l’ambiente di metodi di istanza della classe Poly
non può generare codice che trasferisce direttamente il controllo al codice del metodo
- perché il metodo da invocare a tempo di esecuzione è determinato dal tipo effettivo di p1 che non può essere determinato staticamente a tempo di compilazione
- tra la dichiarazione ed il comando, il tipo effettivo di p1 può essere stato modificato
può solo generare codice che a run-time trova il metodo giusto e poi gli passa il controllo (dispatching)