接口

type
  ICar = interface
    function StartEngine: Boolean;
    procedure StopEngine;
  end;

  TSportCar = class(TInterfacedObjectICar)
  private
    FStarted: Boolean;
  public
    function StartEngine: Boolean;
    procedure StopEngine;
  end;

function TSportCar.StartEngineBoolean;
begin
  if FStarted then
    Exit(False);
  WriteLn('start engine');
  FStarted := True;
  Result := True;
end;

procedure TSportCar.StopEngine;
begin
  WriteLn('stop engine');
  FStarted := False;
end;

var
  Car: ICar;
begin
  Car := TSportCar.Create;

  WriteLn('started is ', Car.StartEngine);
  Car.StopEngine;
end.