One way to handle polymorphism is for a method to fob the job off on one of several
objects — each of which has either implemented its version of the required
function via extending a class or implementing an interface. To fake a callback you
pass an object as a parameter that knows how to do the callback method.