It abstracts the implementation details for the caller.
Polymorphism reduces caller coupling by allowing the caller to interact with an object's interface rather than its concrete class. This means the caller isn’t tied to a specific implementation, making it easier to swap out or modify implementations without affecting the caller. For instance, an 'OrderProcessor' can work with any object that implements an 'Order' interface, whether it's a 'StandardOrder' or a 'SpecialOrder', without needing to know the specific details of each order type.