 Subtyping – a form of polymorphism – is when calling code can be agnostic as to which class in the supported hierarchy it is operating on – the parent class or one of its descendants.Meanwhile, the same operation name among objects in an inheritance hierarchy may behave differently.For example, objects of type Circle and Square are derived from a common class called Shape.