godrik: bien joué, tu as trouvé une source d'incohérence meilleure que la mienne.
À mon avis, la bonne réponse est : "repense complétement ce que tu es en train de faire."
On a des moyens propres pour faire exécuter un code différent suivant le type d'un objet. Souvent, la surcharge suffit. Pour les cas où on veut en plus mélanger des objets de plusieurs types différents (genre des serviettes et des torchons), il y a les classes abstraites. Dans les deux cas, ça vaut mille fois mieux que de faire des tests louches sur les (prétendus) types des objets. 