Next: Type des arguments et Up: Options Statiques Previous: Le typage Statique

Vérifications de typage

Avec les informations suplémentaires fournies par le typage statique, le compilateur peut fournir une meilleur vérification de type dans deux situations :

Le typage reste cohérent avec la hiérarchie de classes. Comme c'est illustré dans l'exemple suivant :

View *uneView; Matrix *uneMatrix;

uneMatrix = [[Matrix alloc] init]; uneView = uneMatrix;

Ici uneMatrix peut être assigné à la variable uneView car Matrix est une sorte de View, la classe Matrix hérite de View. Par contre les rôles ne peuvent être inversés car une View n'est pas une Matrix. Dans ce cas le compileur émet un message d'erreur (toutes les view ne sont pas des Matrix).

Il n'y a pas de vérification quand une des expressions de l'affectation est typé id. Un objet typé peut être librement affecté à une variable id, est un id à une variable statiquement typé. Du fait que des méthodes comme alloc et init retourne des id, le compilateur ne vérifie pas que l'objet retourné placé dans une variable typée est compatible. Le code suivant dangereux est néant en moins correct :

Matrix *aMatrix; aMatrix = [[Window alloc] init];

Remarque: Ceci est en harmonie avec l'implémentation de void * (pointeur sur void) du C ANSI. De la même façons que void * est générique et permet d'éviter la coercicion dans les affectations entre pointeurs, id est un type générique qui permet d'éviter l'opération de coercition dans une class spéciale en cas d'affectation entre objets.



Dominique REVUZ
Vendredi 21 février 1997 17:27:12
Une Bug Un mail Merci