Reintroduce/eo

From Lazarus wiki
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Deutsch (de) English (en) Esperanto (eo) suomi (fi) français (fr)

La modifilo reintroduce apartenas al objektema programado. La modifilo reintroduce lasas metodon de la patra klaso esti kaŝita pere de metodo kun la sama nomo. Tio estas, nova metodo ekzistas en la klaso derivita el la patra klaso kaj en ĉiuj aliaj klasoj derivataj el ĝi. La metodo en la patra klaso estas konservita kaj ankoraŭ povas esti uzata per ĝi.

La metodo de la patra klaso ne plu ekzistas en la nova klaso, ĝi estis anstataŭigata de la nova metodo kun la sama nomo. La metodo daŭras ekzisti en sia originala formo en la patra klaso kaj povas esti uzata per la patra klaso. Tiu ĉi kontraŭas la modifilo override kiu nur funkcias por virtual metodoj. La modifilo reintroduce nur forigas averton ke simila metodo jam ekzistas kaj ke la programisto konscias pri ĝi.

Ekzemple:

interface

type
  TParentClass = class
    procedure SetTest(intNum: Integer); // Iu metodo
  end;

  TDerivedClass = class(TParentClass)
    procedure SetTest(strName: String); reintroduce; // Tiu ĉi anstataŭas la metodon de la patra klaso en la derivita klaso. Kaj forigas avertojn ke iu metodo kun identa subskribo jam ekzistas.
  end;

implementation

procedure TDerivedClass.SetTest(strName: String);
begin
  inherited SetTest(1); // Voku metodon kun la sama nomo el patra klaso, se estas bezonata.
end;