Почему я могу получить доступ к переменным частного класса вне класса и как я могу его предотвратить?

Я использую этот код

type
 TSomeClass = class(TOBject)
 private
  class var InstanceCount : integer;
  class var TotalInstanceCount : integer;
 public
  class function instances: integer;
  class function totalInstances: integer;
  constructor Create;
  destructor Destroy;
end;

constructor TSomeClass.Create;
begin
 inherited Create;
 Inc(InstanceCount);
 Inc(TotalInstanceCount);
end;

destructor TSomeClass.Destroy;
begin
 Dec(InstanceCount);
 inherited;
end;

class function TSomeClass.instances;
begin
  Result := InstanceCount;
end;

class function TSomeClass.totalInstances;
begin
  Result := TotalInstanceCount;
end;

Я хочу создать счетчик экземпляра, и я установил некоторые переменные класса как частные. Вопрос очень прост, просто посмотрите на это изображение:

введите описание изображения здесь

Как вы можете видеть в красном поле, есть переменные класса, которые я объявлял закрытыми. Я не хочу, чтобы они появлялись. Я хочу, чтобы функции публичного класса могли показывать счетчики. Что я могу сделать?

Ответ 1

Как поясняется в документации, доступ к разделу класса private можно получить где угодно в пределах единицы, где этот класс определен. Чтобы избежать этого и устранить доступ к этим частным членам класса из другого места в том же блоке, вместо этого используйте strict private.

Конечно, если ваш дизайн приложения требует его, вы также можете перенести этот класс на другой блок, что, в свою очередь, даст эффект, который вы ищете.