Главная » Java » Уровни доступа

0

 методы и  переменные  класса  могут  иметь  следующие уровни доступа: public, private, protected  и package.  Наш

класс PingPongEngine имеет уровень  доступа public. Это значит, что  у любого класса есть доступ к нему. Давайте  проведем простой эксперимент  — удалим ключевое слово public из  объявления класса PingPongEngine.     Теперь   класс   PingPongTable  не   будет компилироваться,   указывая  на  ошибки  PingPongEngine cannot be resolved  to  a  type  (Невозможно  определить  тип  PingPongEngine)  и  The type   engine.PingPongEngine    is    not    visible    (Тип    данных engine.PingPongEngine  невидим).  Это   значит,   что   класс PingPongTable не видит больше класс PingPongEngine.

Если  уровень доступа не указывается явно, то подразумевается уровень доступа  package.  Это  значит,  что  класс  будет  доступен  только  для классов, которые находятся в одном с ним пакете (директории).

Точно также,  если вы  забудете дать доступ к методам класса PingPongEngine, класс PingPongTable так же укажет вам на это, сообщив, что эти методы  для него невидимы. В  следующей главе в процессе создания  игры в  пинг-­?понг вы увидите,  как используются уровни доступа.

 

Уровень  доступа private  используется  для  сокрытия  методов  или переменных  класса  от  внешнего  мира. Представьте  себе  автомобиль. Большая  часть людей понятия не имеют, какое количество деталей находится  у него под капотом, а также о том, что реально происходит, когда водитель нажимает на педаль тормоза.

Взгляните  на  следующий  фрагмент  кода.  В  языке  Java  мы можем сказать,  что  объект  Car показывает  только  один  public метод  —

 brake(),  внутри  которого  могут  быть  вызваны несколько  других методов, знать  о  которых  водителю  нет  никакой  необходимости.

Например, если водитель чересчур сильно нажимает на педаль тормоза, компьютер    автомобиля     может     включить     специальные антиблокировочные тормоза. Я уже упоминал ранее, что программы на Java   управляют  такими  сложными  роботами, как  марсианские вездеходы, не говоря уже о простых автомобилях.

public class Car {

// Эта private переменная может использоваться

// только внутри класса

private String brakesCondition;

// public метод brake() вызывает private методы,

// чтобы решить, какие тормоза использовать

public void brake(int pedalPressure){ boolean useRegularBrakes; useRegularBrakes=checkForAntiLockBrakes (pedalPressure); if (useRegularBrakes==true){

useRegularBrakes();

}else{

useAntiLockBrakes();

}

}

// Этот private метод, проверяющий тормоза с авто-блокировкой

// может быть вызван только внутри этого класса

private boolean checkForAntiLockBrakes(int pressure){

if (pressure > 100){

return true;

}else {

return false;

}

}

// Этот private метод может быть вызван

// только внутри этого класса

private void useRegularBrakes(){

// здесь будет код, который посылает сигнал обычным тормозам

}

// Этот private метод может быть вызван

// только внутри этого класса

private void useAntiLockBrakes(){

// код, который посылает сигнал антиблокировочным тормозам  }

}

Есть еще одно ключевое слово в Java  — protected —  которое также устанавливает  уровень доступа.  Если  вы используете  это  ключевое слово  в  сигнатуре  метода,  то этот метод будет доступен в классах-­? наследниках, а также в других классах, которые расположены в этом же пакете.  Однако он не будет доступен для классов,  которые находятся в других пакетах.

Одно  из важных  свойств  объектно-­?ориентированных  называется инкапсуляцией.   Это  означает  способность  прятать  и  защищать элементы класса от доступа из других классов.

В процессе разработки класса скрывайте методы  и переменные класса, которые  не должны  быть видимы  во внешнем мире.  Если конструктор автомобиля не  скроет  управление  частью  внутренних  операций,  то водитель  столкнется  с  необходимостью  взаимодействия  с  сотнями кнопок, переключателей и приборов.

В   следующем   разделе   вы  сможете   найти   класс   Score,  который скрывает  свои свойства в переменных с доступом private.

Источник: Java  Programming for Kids, Parents and Grandparents by Yakov Fain

По теме:

  • Комментарии