Polymorphism and dynamic method lookup are a powerful programming paradigm that simplifies client definitions, encourages object decoupling, and supports dynamically changing relationships between objects at runtime. According to Liang, Ploymorphism is : “An object of a subtype can be used wherever its supertype value is required. This feature is known as polymorphism” In above example