Liskov's Substitution Principle
The ‘L’ in SOLID design principles is for Liskov’s Substitution Principle. The gist of it is that objects of a superclass should be able to be replaced with objects of a subclass without altering the correctness of the program.
In keeping with our zoo program, if we have a Bird class with a Fly() method, what happens to flightless birds?
According to the LSP, if a program is written with a list of “Bird” objects and a “Penguin” object is added to the list, the program should still work correctly without any modification.