Object-oriented programming (OOP) uses objects that contain data and methods. The four pillars of OOP are abstraction, encapsulation, inheritance, and polymorphism. Abstraction hides unnecessary details, encapsulation shields an object's internal implementation, inheritance allows classes to inherit attributes from superclasses, and polymorphism enables different processing depending on an object's type. Classes define objects through attributes like fields and behaviors like methods. Objects are class instances created in memory. Java controls access through private, public, default, and protected types.