2010-04-30 5 views

Répondre

3

Il ne sait pas avec certitude quel type est renvoyé, car doSomething pourrait être implémenté avec un type de retour différent par plusieurs classes différentes.

Je crois que le compilateur recherche toutes les implémentations de méthode avec ce nom, et s'assure qu'au moins l'un d'entre eux retourne un int dans l'exemple ci-dessus. Si aucune des signatures "doSomething" ne renvoyait un int, cela donnerait un avertissement.

2

Le compilateur connaît toutes les méthodes actuellement visibles. S'il a un type pour le message que vous envoyez, il utilise ce type. S'il connaît plusieurs types de méthodes qui ont tous ce sélecteur, il en choisira arbitrairement un, ce qui conduira à des avertissements et probablement à des bogues. S'il ne connaît pas de type pour une telle méthode, il supposera que la méthode renvoie un id.

Questions connexes