Этот принцип утверждает — каждый класс должен составлять отдельный модуль. Члены класса, к которым не планируется обращение извне, должны быть инкапсулированы.
В языке Java инкапсуляция достигается добавлением модификатора private к описанию члена класса. Например:
private int mouseCatched;
private String name;
private void preserve();
Эти члены классов становятся
закрытыми,
ими могут пользоваться только экземпляры того же самого класса, например, tuzik может дать поручение
sharik.preserve().
А если в классе
Master
мы напишем
private void getFood(int food, int drink);
то метод
getFood()
не будет найден, и несчастный
sharik
не сможет получить пищу. ,
В противоположность закрытости мы можем объявить некоторые члены класса
открытыми,
записав вместо слова
private
модификатор
public
, например:
public void getFood(int food, int drink);
К таким членам может обратиться любой объект любого класса.
Знатокам C++
В языке Java словами
private, public
и
protected
отмечается каждый член класса в отдельности.
Принцип модульности предписывает открывать члены класса только в случае необходимости. Вспомните надпись: "Нормальное положение шлагбаума — закрытое".
Если же надо обратиться к полю класса, то рекомендуется включить в класс специальные
методы доступа
(access methods), отдельно для чтения этого поля (get method) и для записи в это поле (set method). Имена методов доступа рекомендуется начинать со слов
get
и
set
, добавляя к этим словам имя поля. Для JavaBeans эти рекомендации возведены в ранг закона.
В нашем примере класса
Master
методы доступа к полю
Name
в самом простом виде могут выглядеть так:
public String getName(){
return name;
}
public void setName(String newName)
{
name = newName;
}
В реальных ситуациях доступ ограничивается разными проверками, особенно в
set-методах,
меняющих значения полей. Можно проверять тип вводимого значения, задавать диапазон значений, сравнивать со списком допустимых значений.