Привет, Марсиане. Сегодня я поведаю вам еще немного информации о очень увлекательном и самом распространенным языке на планете. На нем говорят даже бабушки. В общем речь идет о JAVA.
Что-то зачастил со статьями. Когда-то примерно год назад решил, что буду писать каждый день и хотя бы по чуть-чуть. И таким образом разовью в себе писательский или еще какой-нибудь талант:)
Речь сегодня пойдет о модификаторах доступа. В Java их всего три:
- private - модификатор открытого доступа
- public - модификатор закрытого доступа
- protected - модификатор защищенного доступа
Итак, модификатор private позволяет скрывать методы и поля класса от любопытных глаз. Т.е. если у метода или класса будет этот модификатор, то вне класса к нему нельзя будет обратиться.
Этот модификатор позволяет придерживаться инкапсуляции данных.
Модификатор доступа public предоставляет полную свободу как внутри класса, так и снаружи его. Чем плох этот модификатор? А плох он тем, что предоставляет неограниченную свободу программистам. Дай ребенку волю, так он всю квартиру разнесет и устроит для соседей аквапарк. Тоже самое и с программистом. Свобода должна быть в меру.
Модификатор protected. Я называю его золотой серединой. Ибо методы и поля, объявленные с таким модификатором можно использовать только в подклассах, а так же классах находящихся в том же пакете. Как правило в большей степени используют этот модификатор для методов, нежели для полей. Так как существует вероятность, когда без вашего ведома другие программисты будут использовать поля вашего супер класса в своих подклассах. После этого вы уже не сможете изменить реализацию класса не уведомив об этом других программистов.
Ниже определены несколько правил, которые я определил для себя. Но, ими могут пользоваться и другие программисты.
- Все поля класса объявлять с модификатором private.
- Все методы, которые не нужны вне класса делать закрытыми (private).
- Если метод нужен вне класса, то определять его открытым (public).
- Если возможно так случится, что метод понадобится в других классах, то определяем его защищенным.
- Если все-таки очень захотелось использовать поля супер класса в подклассах, то конечно же можно использовать модификатор protected. Но лучше этого не делать.
- Модификатор public использовать только для констант. Полей объявленных с ключевым словом final.
В заключении хочу сказать, что на самом деле есть еще один модификатор доступа. Он невидимый, но он существует:) Если метод или поле определить без модификатора, то область их видимости распространяется только на пакет.