Z Programming Languages: Principles and Paradigms, by Maurizio Gabbrielli, Simone MartiniCzy polimorfizm w językach programowania implikuje zależność między podzbiorem powiązanych typów?
De Definition 8,5 systemie typu, w którym ten sam obiekt może mieć więcej niż jeden rodzaj mówi się polimorficzne.
Analogicznie powiemy, że obiekt jest polimorficzny, gdy system typu przypisuje mu więcej niż jeden typ.
Gdy obiekt jest polimorficzny, należy założyć, że przypisano mu typ T1 i typ T2. Czy zawsze jest prawdą, że jeden z dwóch typów T1 i T2 jest podzbiorem drugiego? (Zauważ, że jeśli uważasz, że to nieprawda, możesz je obalić, podając kontrprzykład.)
Jeśli to prawda, to możemy powiedzieć, że polimorfizm zachodzi na poziomie typów, który jest większy niż na poziomie obiekty, w tym sensie, że przypuszczalnie T1 jest podzbiorem T2, dowolny obiekt T1 może być również przypisany T2?
Jeśli nie jest to prawda, to możemy powiedzieć, że polimorfizm zachodzi tylko na poziomie obiektów, a nie na poziomie typów, w tym sensie, że inny obiekt T1 może nie być przypisany T2, a inny obiekt T2 może nie być przypisany T1?
Dzięki.
'class Foo implementuje interfejs1, interfejs2 {}'. –
Ponieważ jest to agnostykiem językowym (przynajmniej uważam, że tak powinno być), lepiej byłoby opublikować to na stronie Programmer.SE. – NathanOliver
Myślę, że to prawda, ale nie mogę zrozumieć, dlaczego tak robię. To po prostu ma sens. (Oczywiście możliwe jest nadużywanie systemu typu, ale wydaje się, że dziedziczenie ma na celu pokazywanie relacji typu podzestawu). –