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 :
Car
IS-AVehicle
. By this definition, aCar
has the ability to transport people/cargo from one place to another.Car
is also aCar
. By this definition, it has the ability to be driven using a steering wheel.In the above example, a
Car
IS-ACar
and aCar
is also aVehicle
because 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,
Car
is a subclass ofVehicle
and code that has aCar
object can use all functions fromVehicle
as well asCar
. This would mean that aCar
IS-AVehicle
and aCar
. In conclusion, the type of object is defined by its interface, i.e the set of operations it supports.