Object-oriented programming (OOP) is a type of programming based on objects rather than just functions and procedures. The key features of OOP include inheritance, encapsulation, polymorphism, and data abstraction. A class defines common properties for objects, while an object is an instance of a class. Inheritance allows classes to inherit properties from other classes. Encapsulation binds data and code together within an object. Polymorphism allows the same interface to have different implementations. Data abstraction hides implementation details within an object.