Run-time polymorphism helps us to allow different objects to be treated as objects of a common super-class while executing different implementations of a method based on the actual type of the object at runtime. It also allows us to use the same method with different signature names.