The reductive definition of OO
Object-Oriented Programming is in its essence:
The technique of using dynamic polymorphism to call functions without the source code of the caller depending upon the source code of the callee.
‒ Robert Cecil Martin
Source: https://blog.cleancoder.com/uncle-bob/2018/04/13/FPvsOO.html