I've been digging into some of the SOLID design principles lately, and some information I got from one source originally made sense to me, but based on the strict definitions I've been able to find for thr LSP, it seems like that info might not be correct. The info was specifically that:
1) Not calling back into super() on an overridden method violates LSP (or at least opens you up to violation) because the base class's behavior may change at some point, and your subclass could be missing that behavior in a way that causes the subclass to no longer be substitutable for the parent. That seems to make sense to me, but it would be great if someone could elaborate on that/give some info on when it would ever be appropriate to not call back into super.
2) Subclasses should not be less restrictive than the parent. The example was: if you have a parent class that takes only positive integers, then you make a subclass that accepts both positive and negative ints. So the child should work fine in place of the parent, but the child can't delegate back to super in this case.
I thought that made sense, but the info on LSP seems to say the opposite: a precondition can't be strengthened by the child. Both seem to make sense to me, but Liskov only states that the precondition can't be strengthened and the postcondition can't be weakened. Can someone help enlighten me on this?