type
 o1 = object
  tex : string[10];
  Procedure OutT;
  Procedure SetT;virtual;
 end;

 o2 = object(o1)
   Procedure SetT;virtual;
 end;

procedure o1.SetT;
begin
 tex := 'o1';
end;

procedure o2.SetT;
begin
 tex := 'o2';
end;

procedure o1.OutT;
begin
 Self.SetT;
 WriteLn(tex);
end;

var
 ob : ^o2;
 ob2 : ^o1;

BEGIN
 New(ob);
 ob2 := ob;
 ob2.OutT;
END.