Suponha que tem uma coleção de Cat
, e algumas referências de objetos de tipos Animal
, Cat
, SiameseCat
, e Dog
. Perguntar à coleção se ela contém o objeto referido pela referência Cat
ou SiameseCat
parece razoável. Perguntar se ele contém o objeto referido pela Animal
referência pode parecer desonesto, mas ainda é perfeitamente razoável. O objeto em questão pode, afinal, ser um Cat
e pode aparecer na coleção.
Além disso, mesmo que o objeto seja algo diferente de a Cat
, não há problema em dizer se ele aparece na coleção - simplesmente responda "não, não aparece". Uma coleção "de estilo de pesquisa" de algum tipo deve ser capaz de aceitar significativamente a referência de qualquer supertipo e determinar se o objeto existe na coleção. Se a referência do objeto passado for de um tipo não relacionado, não há como a coleção a conter, de modo que a consulta não é significativa (de certo modo, ela sempre responderá "não"). No entanto, como não há como restringir os parâmetros a subtipos ou supertipos, é mais prático simplesmente aceitar qualquer tipo e responder "não" a objetos cujo tipo não esteja relacionado ao da coleção.