Object-oriented programming (OOP) is a programming paradigm that uses objects and their interactions to design applications. OOP techniques include data abstraction, encapsulation, inheritance, and polymorphism. A class defines members like data fields and methods to enable class instances to have state and behavior. An instance of a class represents a runtime entity and is of the type of its class. For example, an instance of the Fruit class would be a Fruit object. Inheritance allows classes to inherit and extend the attributes and behaviors of parent classes.