Horstmann (2016) defines a class as, “A set of objects with the same behavior” and an object as an instance of a class (p.376). Personally, I view classes and objects as more of a parent-child relationship where the class acts as the "parent", providing the blueprint, structure, and behaviors that the "children" (objects) will inherit and exhibit. The one part of this analogy that doesn’t exactly line up is that parents, like children, are both physical beings. The same is not true for classes. Classes, while providing the blueprint, are not “tangible” like objects are. Each object has its own unique state (the values of the instance variables), whereas classes define common properties shared by all objects of that class. To explain further, classes are simply definitions, but objects are the product of those definitions. Furthermore, objects exhibit the behaviors (methods) defined in the class, whereas classes define the methods that the objects can perform. For example, parents may provide rules and guidelines for their children but it’s up to the kids to act accordingly. Lastly, objects are dynamically created using the keyword new and occupy memory, whereas classes are defined using the keyword class, stored in the Java Virtual Machine (JVM), and are used to create objects.
***References Horstmann, C. S. (2016). Big Java Late Objects (2nd ed.). Wiley Global Education US. https://online.vitalsource.com/books/9781119321071