Une définition de classe est la spécification d'une
espèce d'objet. Pratiquement, la classe
définie un type de donné, une structure C. Le nom d'une
classe peut être utilisé dans le code pour
spécifier le type d'un objet en lieu et place de id. Exemple :
Matrix *maMatrix;
Ceci est du typage statique, le compilateur connaît le type de l'objet, en opposition au typage dynamique avec le type id.
Le type id est un pointeur sur un objet. De même les objets sont statiquement typés comme des pointeurs vers une classe (vers une structure définie par la classe). Un objet est toujours typé par un pointeur, le typage statique explicite le pointeur, le typage par id le cache.
Un objet peut être typé statiquement avec sa propre classe ou toute classe de sa généalogie. Comme un objet Matrix est aussi une View il peut être statiquement typé en View:
View *maMatrix;
L'objet maMatrix est plus qu'une View, il a les variables d'instance d'une View et d'un Control mais c'est néanmoins une View. Pour la vérification de type le compilateur considère que maMatrix est une View mais à l'exécution maMatrix sera manipulé comme une Matrix.
Voir "Options Statiques," pour plus d'information sur le typage statique et ces avantages.