An instance is an actual occurrence of this object. Normally you can define as many instances of a class as you like. 2 John Rolls Royce Inheritance OOP is a powerful modeling tool. Objects can be defined on the abstraction level that best suits a problem representation. An object can inherit data and methods from objects at higher levels.
Objects are thus an easy way to make very modular programs.
I.e. even if the states of two objects are identical, the objects are not identical, because we can change the state of one object without changing the other, and then the objects no longer have identical states. We never have direct access to an object, we always access an object by means of a reference to an object and while an object is only identical to itself, we can have many references to the same object. Thus, the same object can be accessed through many different references. Two classes cannot have the same name in the same program.