Object-oriented programming uses objects that contain data fields and methods to design applications. Key concepts include abstraction, encapsulation, inheritance, and polymorphism. A class defines shared attributes and behaviors that enable instances of that class to maintain state and behavior. An object is a runtime instance of a class that represents some entity like a person or place. Data encapsulation wraps data and code together, controlling access through public, private, and protected keywords. Inheritance allows classes to inherit attributes and behaviors from superclasses to create class hierarchies.