Object-oriented programming (OOP) is a programming paradigm that designs applications using 'objects', which combine data fields and methods. Key concepts include classes for creating instances, data encapsulation, and inheritance, which allows subclasses to inherit properties from superclasses. Many modern programming languages support OOP features such as polymorphism, messaging, and advanced encapsulation control.