= Double dispatch
{wiki}
Select behavior using the runtime types of two participating <software objects>, typically through two virtual method calls. A method on the first participant calls a virtual method on the second, passing `this` with the concrete static type established in that second method's class. <Method overloading> there selects a signature, after which <dynamic dispatch> selects the implementation on the other runtime receiver. This differs from expecting ordinary overload resolution to inspect a method argument's runtime class.
Back to article page