= Behavioral subtyping
Substitution of an implementation for an interface while preserving its behavioral contracts, not just method types. Strengthening a method's <precondition> or weakening its <postcondition> can invalidate substitution. A nonnegative immutable refinement of a signed count value can inherit an exact subtraction returning the signed supertype; changing that same operation into truncated subtraction would not satisfy its parent's exact-difference postcondition.
Back to article page