By Alvin Alexander. Last updated: June 4, 2016
From a nice article titled, “10 OOP principles Java developers should know”:
1) DRY (don't repeat yourself)
2) Encapsulate what changes
3) Open Closed Design Principle
4) Single Responsibility Principle
5) Dependency injection (or, Inversion of control)
6) Favor composition over inheritance
7) Liskov Substitution Principle (LSP)
8) Interface Segregation Principle (ISP)
9) Program for the interface, not the implementation
10) Delegation Principle