Читать «Java 7 (Наиболее полное руководство)» онлайн - страница 47
Ильдар Шаукатович Хабибуллин
В нашем примере класса Master методы доступа к полю name в самом простом виде могут выглядеть так:
public String getName(){ return name;
}
public void setName(String newName){ name = newName;
}
В реальных ситуациях доступ ограничивается разными проверками, особенно в
Кроме методов доступа рекомендуется создавать проверочные
public boolean isEmpty(){ return name == null;
}
и использовать этот метод для проверки при доступе к полю name, например: if (master01.isEmpty()) master01.setName("Иванов");
Итак, мы оставляем открытыми только методы, необходимые для взаимодействия объектов. При этом удобно спланировать классы так, чтобы зависимость между ними была наименьшей, как принято говорить в теории ООП, было наименьшее
Напротив, члены класса должны активно взаимодействовать друг с другом, как говорят, иметь тесную функциональную
Объекты, построенные по этим правилам, подобны кораблям, снабженным всем необходимым. Они уходят в автономное плавание, готовые выполнить любое поручение, на которое рассчитана их конструкция.
Будут ли закрытые члены класса доступны его наследникам? Если в классе Pet написано
private Master person;
то можно ли использовать sharik.person? Разумеется, нет. Ведь в противном случае каждый, интересующийся закрытыми полями класса а, может расширить его классом в и просмотреть закрытые поля класса а через экземпляры класса в.
Когда надо разрешить доступ наследникам класса, но нежелательно открывать его всему миру, тогда в Java используется
protected Master person;
Следует сразу сказать, что на доступ к члену класса влияет еще и пакет, в котором находится класс, но об этом мы поговорим в следующей главе.