These examples demonstrate the use of duck typing to implement multimethods (also called multiple dispatch). With multimethods, the decision about which method to call is deferred until runtime based on the actual runtime types of the arguments to the method. The Dylan and Nice programming languages implement it by default, boo lets the programmer decide when to use it via duck typing.

Multimethods are useful when the correct method to call cannot be determined at compile time because the runtime argument types are not known. Two examples are shown - multiple dispatch of static methods and multiple dispatch of instance methods.

The next example shows how a class which collects integers (IntCollector) can be extended with minimal effort to sift through lists too (MyListIntCollector) and demonstrates multiple dispatch of an instance method.