The **Liskov substitution** states that you should only extend a type (or [[Class Inheritance|inherit a class]]) once you are completely sure that the new one would be, in its essence, the original one. If this is not true, then it is not the appropriate mechanism and something else is required to solve the problem, like extending another type that better fits that design or creating a new type instead.
There is an even easier explanation: **if `B` inherits from `A`, `B` should always pass all of `A`'s black-box tests**.