Why does object's type refer to its interface? Why the term type is used here? In terms of C++ I am not able to understand it.
Gamma, Erich. Design Patterns: Elements of Reusable Object-Oriented Software (Addison-Wesley Professional Computing Series) (Kindle Locations 593-596). Pearson Education. Kindle Edition.
An object’s class defines how the object is implemented. The class defines the object’s internal state and the implementation of its operations. In contrast, an object’s type only refers to its interface—the set of requests to which it can respond. An object can have many types, and objects of different classes can have the same type.
Objects in OOP are not very different from the real world. For example :
CarIS-AVehicle. By this definition, aCarhas the ability to transport people/cargo from one place to another.Caris also aCar. By this definition, it has the ability to be driven using a steering wheel.In the above example, a
CarIS-ACarand aCaris also aVehiclebecause it can be driven using a steering wheel to move cargo/people from one place to another. In other words, the type of an object in the real world is defined by the things you can do with it (vis-à-vis it's interface.)If we use the above analogy in programming,
Caris a subclass ofVehicleand code that has aCarobject can use all functions fromVehicleas well asCar. This would mean that aCarIS-AVehicleand aCar. In conclusion, the type of object is defined by its interface, i.e the set of operations it supports.