In reply to chris90:
The keyword ‘virtual’ in connection with a method (task/function) provides the so called ‘late binding’. This is arun-time redirection of method calls. When a virtual method is called, the method implementation is chosen based on the object’s type, so you automatically get the correct implementation for that object.