uses Classes; type TMyComponent = class(TComponent) procedure Show; virtual; abstract; end; TMyClass = class(TMyComponent) procedure Show; override; end; procedure TMyClass.Show; begin writeln('TMyClass'); end; var X: TMyComponent; begin X := TMyClass.Create(nil); X.Name := 'abc'; writeln(X.Name); X.Show; X.Free; end.