От Programming Languages: Principles and Paradigms, by Maurizio Gabbrielli, Simone MartiniПолиморфизм в языках программирования подразумевает подмножество отношений между задействованными типами?
De определению 8.5 Тип системы, в которой тот же объект может иметь более чем один тип называется полиморфными.
По аналогии, мы будем говорить, что объект является полиморфным, когда система типа присваивает ему более одного типа.
Когда объект является полиморфным, предположим, что ему назначен тип T1 и тип T2. Всегда ли верно, что один из двух типов T1 и T2 является подмножеством другого? (Обратите внимание: если вы считаете, что это неверно, вы можете опровергнуть его, указав контрпример.)
Если это правда, то можем ли мы сказать, что полиморфизм происходит на уровне типов, который больше, чем на уровне объекты, в том смысле, что предполагаемый T1 является подмножеством T2, любому объекту T1 также может быть назначен T2?
Если это не так, то можем ли мы сказать, что полиморфизм происходит только на уровне объектов, а не уровня типов, в том смысле, что другому объекту T1 не может быть назначен T2, а другой объект T2 может не назначаться T1?
Спасибо.
'class Foo реализует Interface1, Interface2 {}'. –
Поскольку это язык агностик (по крайней мере, я думаю, это должно быть), возможно, лучше опубликовать его на Programmer.SE. – NathanOliver
Я думаю, что это правда, но я не могу понять, почему я это делаю. Это просто имеет смысл для меня. (Конечно, возможно, возможно злоупотреблять системой типов, но наследование, похоже, предназначено для отображения отношений типа подмножества). –