Object-oriented programming uses classes and objects. A class defines common attributes and behaviors of objects. An object is an instance of a class that reserves memory at runtime and can access class methods and variables. The Java virtual machine allows programs to create and run objects by allocating memory and executing methods defined in their classes. Constructors initialize new objects and allow passing parameters to customize each object.