To be 100 percent transparent, I struggled through researching this topic. However, what helped me understand it was this:
- Talking it through with a software engineer that I respect (Chase Baker)
- Breaking down the definition into very small pieces
With that in mind, let's walk through a dead simple definition of the concept. The LSP states this:
A program should have the ability to replace any instance of a parent class with an instance of one of its child classes without negative side effects.