Subtyping vs subclassing
Subtyping means subtype preserves all properties of supertype
Subclassing means subclass preserves class methods of super class, but may override their behaviour.
What does this mean?
Suppose we have a set
which extends from a super class list
. It still has the method add
which allows us to add an element to the list.
However, although it is a valid subclass
since it preserves all methods, the properties of set is different from list. It is no longer ordered. As such, it can’t be a subtype.