An object contains both data and methods that manipulate that data. The data represents the state of the object. Classes describe objects by defining their fields and methods. Objects inherit fields and methods from their superclass. To create an object, the appropriate constructor must be called using the new keyword. Access control determines which fields and methods are accessible to other classes.