Object-oriented programming (OOP) is a programming paradigm based on the concept of objects that contain data and code. The four pillars of OOP are data abstraction, encapsulation, inheritance, and polymorphism. Data abstraction hides internal details and provides essential information. Encapsulation bundles data with the methods that operate on that data, protecting data within a class. Inheritance allows new classes to inherit properties from existing classes. Polymorphism gives the same functions different meanings depending on usage.