в чем смысл геттеров и сеттеров?
Прохожу курс и автор говорит о том, что надо закрывать поля класса модификатором private. Чтобы не иметь доступ к полю напрямую. А делать это через геттеры и сеттеры.
Тогда в чем смысл, если через сеттер так же можно изменить значение поля?
Единственное, что приходит мне на ум, это то, что в самом сеттере можно установить какой нибудь if() для проверки на ввод.
В общем-то, правильная мысль пришла в голову - вы можете гибко настроить доступ. Плюс вы можете изменять значения. К примеру, было в текущем проекте поле, где была дата окончания действия объекта. И как один из вариантов, дату на основании текущей устанавливал сеттер. То есть, в сеттер ничего не передавалось - он просто вызывался, а все происходило внутри
Потому что вы не можете обеспечить выполнение инвариантов и предпринимать какие либо другие действия при обращении к полю
Хотя менее опасно открывать неизменяемые поля. Иногда бывают ситуации, когда классам, доступным в пределах пакета (или закрытым вложенным классам), желательно раскрытие полей - как изменяемых, так и не изменяемых
Обсуждают сегодня