Task

Demonstrate how to make the object respond (sensibly/usefully) to an invocation of a method on it that it does not support through its class definitions.

Note that this is not the same as just invoking a defined method whose name is given dynamically; the method named at the point of invocation must not be defined.

This task is intended only for object systems that use a dynamic dispatch mechanism without static checking.



Related task

   Send an unknown method call.


 
type
  Tanimal = class
  public
    procedure bark(); virtual; abstract;
  end;
 
implementation
 
var
  animal: Tanimal;
 
initialization
 
  animal := Tanimal.Create;
  animal.bark(); // abstract method call exception at runtime here
  animal.Free;
 
end.
 