Pokrywanie versus ukrywanie


Jeśli w deklaracji metody wyspecyfikowano taki sam identyfikator metody i sygnaturę parametrów jak w metodzie odziedziczonej, ale nie użyto dyrektywy override, nowa deklaracja po prostu ukrywa odziedziczoną bez pokrywania jej. Obydwie metody istnieją w potomnej klasie, gdzie nazwa metody jest statyczna. Przykład:

type
  T1 = class(TObject)
    procedure Act; virtual;
  end;
  T2 = class(T1)
    procedure Act;  // Act jest redeklarowane, ale nie pokryte
  end;

var
  SomeObject: T1;
begin
  SomeObject := T2.Create;
  SomeObject.Act;  // aktywuje T1.Act
end;