Думайте о типах как о контрактах.Предположим, у вас есть зоопарк, и в нем есть много животных.
Ну, для любого имеющегося у вас животного вы можете убедиться, что у него есть назначенная клетка (пример).Если животные являются млекопитающими, вы можете получить специфику млекопитающих.Если они пловцы, вы можете узнать температуру воды, которую они предпочитают, и так далее.
В этом случае у вас будет много типов IEntity, IMammal и ISwimmer и заданный объект, например, пингвин имеет тип IEntity и тип ISwimmer.Помните об аналогии с типом-контрактом, и поэтому тип указывает на запросы, на которые может ответить данный объект, точно так же, как в контракте указано, что вы можете сделать, а что - не можете сделать для конкретной контрактной задачи.
Надеюсь, мой ответ поможет