Virtual is used so that the function is placed in the
VMT so it can be overridden by sub-classes. Many standard
Delphi component methods can be overriden because they
too are declared virtual and are placed in the VMT.
Abstract is used do tell the compiler that there is no
implementation for this function, only that it exists
and will be implemented somewhere else.