void setShowFPS(boolean b){ this.showFps = b; }
Это относительно простая процедура. Представьте, что у вас было поле типа double
, например, где он должен был иметь нечетную целую часть. Вы бы установить showFps
быть частными, а затем получить доступ к нему через прямой геттер и сеттер валидации (показано здесь в синтаксисе Java):
void setF(double f_) throws IllegalArgumentException {
int ip=(int) f;
if(ip%2!=1) throw new IllegalArgumentException();
this.f = f_;
}
сеттера могут делать такие вещи, как обновление других полей косвенно пострадавший (например, временная метка последнего изменения, например). Во всяком случае, если вам когда-либо приходилось обновлять внутренний код для использования BigInteger, например, возможность получить и установить через двойники извне заставит пользователей вашего класса нарушать ваши изменения.
C# будет использовать свойства для этого, возможно.
Это называется [инкапсуляция] (http://en.wikipedia.org/wiki/Encapsulation_ (объект-oriented_programming)) –
@LuiggiMendoza: Нет, это называется "бесполезная работа". Правильная инкапсуляция означает, что вызывающему абоненту вообще не нужно устанавливать свойство. – cHao