Unit unit1; interfaceuses classes, controls, forms, dialogs, stdctrls; Type tform1 = Class (tform) button1: tbutton; Procedure button1click (Sender: tobject); end; tbase = Class procedure proc1; virtual; Procedure proc2; end; tchild = Class (tbase) Procedure proc1; override; Procedure proc2; end; var form1: tform1; implementation {$ R *. DFM} {tbase} procedure tbase. proc1; begin showmessage ('b1 '); end; Procedure tbase. proc2; begin showmessage ('b2'); end; {tchild} procedure tchild. proc1; begin // inherited; showmessage ('c1'); end; Procedure tchild. proc2; begin showmessage ('c2 '); end; Procedure tform1.button1click (Sender: tobject); var B: tbase; C: tchild; BC: tbase; begin B: = tbase. create; C: = tchild. create; BC: = tchild. create; B. proc1; // B1 B. proc2; // B2 tchild (B ). proc1; // B1 tchild (B ). proc2; // C2 C. proc1; // C1 C. proc2; // C2 tbase (c ). proc1; // C1 tbase (c ). proc2; // B2 BC. proc1; // C1 BC. proc2; // B2 tbase (BC ). proc1; // C1 tbase (BC ). proc2; // B2 tchild (BC ). proc1; // C1 tchild (BC ). proc2; // C2 B. free; C. free; BC. free; end.