Classes should be designed to perform their tasks flawlessly without expecting to be modified in future. A class should remain closed to alteration, but extendable.
According to it, no client should be required to implement any interface or rely on method that it doesn't use. It makes your code more readable and maintainable.
It states that one should rely on abstractions rather than real implementations. Details should not depend on abstractions; rather, abstractions should depend on details.