Интерфейсы - это ответ, и на самом деле они более мощные, чем "const" в C ++. const - это универсальное решение проблемы, где «const» определяется как «не устанавливает членов и не вызывает что-то, что устанавливает членов». Это хорошая условность для постоянства во многих сценариях, но не во всех. Например, рассмотрим функцию, которая вычисляет значение на основе некоторых членов, но также кэширует результаты. В C ++ это считается неконстантным, хотя, с точки зрения пользователя, оно по существу является постоянным.
Интерфейсы дают вам больше гибкости в определении определенного подмножества возможностей, которые вы хотите предоставить в своем классе. Хотите постоянство? Просто предоставьте интерфейс без мутирующих методов. Хотите разрешить установку одних вещей, но не других? Предоставьте интерфейс только с этими методами.