An object contains both data and methods that manipulate that data. The data represent the state of the object. Classes describe objects by defining their fields and methods. Objects inherit fields and methods from their superclass and belong to a class. Constructors are used to create objects and initialize their fields. Access control determines which fields and methods are accessible to other classes.