"""Describe and give an example of each of the following types of polymorphism:

    Ad-hoc polymorphism
    Parametric polymorphism
    Subtype polymorphism
"""
"""In programming languages, ad hoc polymorphism is a kind of polymorphism in which
 polymorphic functions can be applied to arguments of different types, 
 because a polymorphic function can denote a number of distinct and potentially 
 heterogeneous implementations depending on the type of argument(s) to which it
 is applied.
 
 Using parametric polymorphism, a function or a data type can be written 
 generically so that it can handle values identically without depending on their type.
 
 Subtype Polymorphism – is that we have because of inheritance (When we inherit 
 from some class, in the method signature it is possible to write superclass
 and put there any subclass).
 """
