In fact, skip all the natter about subtypes and the like and think _purely_ in terms of class invariants.
A class invariant holds at the end of the constructor and the start of the destructor and at the start and end of every public method.
A class invariant check for the child class _must_ invoke the class invariant check of the parent class up the class hierarchy.
And that is the point and the whole point of the exercise.
You can utterly rely every on instance of the parent class or any descendent class obeying the class invariant for the parent class.
This allows you to reason about a broader group of types without getting bogged down by concrete details.