The selection of a method to run based on both a) its signature, and b) the type of one or more of its arguments. Feature found in all OO languages. In many languages, all method calls are potentially dynamic (though StaticDispatch may be used as an optimization). In others, such as CeePlusPlus, functions have to be explicitly declared to use dynamic dispatch (the virtual keyword does this in C++; a virtual function is little more than one that uses dynamic dispatch).
There are several types of DynamicDispatch:
SingleDispatch. Found in most OO languages (SmalltalkLanguage, JavaLanguage, CeePlusPlus); only one argument (usually given a special name like "this" or "self") is used (along with the method signature) to select the method to run. Easy to implement, and meshes well with the encapsulation semantics of many OO languages.