Вы просто заново вводите конструктор с именем предка.Как только вы это сделаете, пользователь не сможет создать TMyObject
, вызывающий конструктор, введенный в TObject
.Если вы используете такой код:
TMyObject = class
public
constructor Create;
end;
constructor TMyObject.Create;
begin
// I am not calling the inherited constructor because
// I do not want to.
end;
Вы не используете модификатор override
на TMyObject.Create
, потому что конструктор предка не является виртуальным.
Используя эту схему, это невозможнодля пользователя, чтобы создать TMyObject
, используя конструктор, введенный в предка.В этом случае предком является TObject
, а единственным конструктором является TObject.Create
.Если пользователь пишет этот код:
X := TMyObject.Create;
, это вполне очевидно, будет вызван конструктор TMyObject
, а не тот, который введен в TObject
.
Если выопасаясь, что пользователи будут перепрыгивать через обручи, чтобы создать свой класс с помощью конструктора предка, вы можете делать это с помощью метода AfterConstruction
.Это виртуальный метод, поэтому он вызывается, даже если ваш объект создан с использованием ссылки на класс типа предка:
TMyObject = class
public
procedure AfterConstruction;override;
end;