Subtyping versus subclassing