unit person; {$mode objfpc}{$H+} interface uses Dialogs; type TPerson = class procedure Speak; virtual; abstract; end; {TBeckham} TBeckham = class(TPerson) procedure Speak; override; end; {TShakespeare} TShakespeare = class(TPerson) procedure Speak; override; end; {TWest} TWest = class(TPerson) procedure Speak; override; end; {TBlaise} TBlaise = class(TPerson) procedure Speak; override; end; implementation {TBlaise} procedure TBlaise.Speak; begin ShowMessage('Le coeur a ses raisons que la raison ne connait point'); end; {TWest} procedure TWest.Speak; begin ShowMessage('I used to be Snow White... but I drifted'); end; {TShakespeare} procedure TShakespeare.Speak; begin ShowMessage('The robbed that smiles steals something from the thief'); end; {TBeckham} procedure TBeckham.Speak; begin ShowMessage('I''ve got more clothes than Victoria!'); end; end.