Wikipedia defines polymorphism as "the ability of
objects belonging to different
types to respond to
method calls of the same name, each one according to an appropriate type-specific behavior." There is nothing too fancy about polymorphism other than it's name. All it means in layman' s terms is that you can define some common behavior for multiple types of objects and have a common codebase which may or may not care about the different variations on a type. A good analogy would be the biological taxonomy system. You may remember this from high school. It has Kingdom, Phylum, Class, Order, Family, Genus and Species. If we were to model all living things according to their taxonomy, then we could have software which behaves much like a dog kennel. The dog kennel takes domesticated dogs. There are many specific breeds of dogs but the kennel knows that any domesticated 4 legged dog will do and will be compatible with their kennel. We could say this dog is polymorphic in a way. Not only is it a domesticated dog, but it's a carnivorous canine which is an animal. Does our software support all animals? Maybe. If so, this dog would work there too.