Java — Самоучитель

  • 15. Java — Массивы
  • 16. Java — Дата и время
  • 17. Java — Регулярные выражения
  • 18. Java — Методы
  • 21. Java — Вложенные и внутренние классы
  • 22. Java — Наследование
  • 23. Java — Переопределение
  • 24. Java — Полиморфизм
  • 25. Java — Абстракция
  • 26. Java — Инкапсуляция
  • 27. Java — Интерфейсы
  • 26. Java – Инкапсуляция

    Инкапсуляция — это одна из четырёх фундаментальных концепций ООП. Названия оставшихся трёх: наследование, полиморфизм, абстракция.

    Инкапсуляция в Java является механизмом обёртывания данных (переменных) и кода, работающего с данными (методами), в одно целое. В инкапсуляции переменные класса будут скрыты от других классов и доступ к ним может быть получен только с помощью метода их текущего класса. По-другому это называется скрытием данных.

    Для достижения инкапсуляции в Java:

    • Объявите переменные класса как private.
    • Предоставьте public к методам установки и получения (сеттеру и геттеру) для изменения и просмотра значений переменных.

    Пример

    Ниже приведён пример процесса инкапсуляции в Java:

    /* File name : EncapTest.java */
    public class EncapTest {
       private String name;
       private String idNum;
       private int age;
    
       public int getAge() {
          return age;
       }
    
       public String getName() {
          return name;
       }
    
       public String getIdNum() {
          return idNum;
       }
    
       public void setAge(int newAge) {
          age = newAge;
       }
    
       public void setName(String newName) {
          name = newName;
       }
    
       public void setIdNum(String newId) {
          idNum = newId;
       }
    }
    

    Публичные методы setXXX() и getXXX() являются точками доступа переменных экземпляра класса EncapTest. Обычно эти методы упоминаются как геттеры и сеттеры. Следовательно, любой класс, который хочет получить доступ к переменным, должен получить к ним доступ через эти геттеры и сеттеры.

    Доступ к переменным класса EncapTest можно получить следующей программой:

    /* File name : RunEncap.java */
    public class RunEncap {
    
       public static void main(String args[]) {
          EncapTest encap = new EncapTest();
          encap.setName("Олег");
          encap.setAge(28);
          encap.setIdNum("12343ms");
    
          System.out.print("Имя: " + encap.getName() + ", возраст: " + encap.getAge());
       }
    }
    

    Мы получим следующий результа:

    Имя: Олег, возраст: 28
    

    Преимущества инкапсуляции

    • Поля класса можно сделать только для чтения или только для записи.
    • Класс может иметь полный контроль над тем, что хранится в его полях.
    Поделитесь:

    О сайте

    Все материалы сайта proglang.su являются результатом труда его авторов. Копирование материалов в некоммерческих целях без указания источника в виде прямой ссылки на сайт proglang.su запрещено. Использование материалов в коммерческих целях разрешено только с письменного согласия автора. Нарушение авторских прав преследуется по закону. Мы это делаем, чтобы защитить плоды своих трудов от воровства. © 2014-2019

    Присоединяйтесь


    Обратная связь