Что такое инкапсуляция java
Перейти к содержимому

Что такое инкапсуляция java

  • автор:

27. 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 

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

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

Оглавление

  • 1. Java – Самоучитель для начинающих
  • 2. Java – Обзор языка
  • 3. Java – Установка и настройка
  • 4. Java – Синтаксис
  • 5. Java – Классы и объекты
  • 6. Java – Конструкторы
  • 7. Java – Типы данных и литералы
  • 8. Java – Типы переменных
  • 9. Java – Модификаторы
  • 10. Java – Операторы
  • 11. Java – Циклы и операторы цикла
  • 11.1. Java – Цикл while
  • 11.2. Java – Цикл for
  • 11.3. Java – Улучшенный цикл for
  • 11.4. Java – Цикл do..while
  • 11.5. Java – Оператор break
  • 11.6. Java – Оператор continue
  • 12. Java – Операторы принятия решений
  • 12.1. Java – Оператор if
  • 12.2. Java – Оператор if..else
  • 12.3. Java – Вложенный оператор if
  • 12.4. Java – Оператор switch..case
  • 12.5. Java – Условный оператор (? 🙂
  • 13. Java – Числа
  • 13.1. Java – Методы byteValue(), shortValue(), intValue(), longValue(), floatValue(), doubleValue()
  • 13.2. Java – Метод compareTo()
  • 13.3. Java – Метод equals()
  • 13.4. Java – Метод valueOf()
  • 13.5. Java – Метод toString()
  • 13.6. Java – Метод parseInt()
  • 13.7. Java – Метод Math.abs()
  • 13.8. Java – Метод Math.ceil()
  • 13.9. Java – Метод Math.floor()
  • 13.10. Java – Метод Math.rint()
  • 13.11. Java – Метод Math.round()
  • 13.12. Java – Метод Math.min()
  • 13.13. Java – Метод Math.max()
  • 13.14. Java – Метод Math.exp()
  • 13.15. Java – Метод Math.log()
  • 13.16. Java – Метод Math.pow()
  • 13.17. Java – Метод Math.sqrt()
  • 13.18. Java – Метод Math.sin()
  • 13.19. Java – Метод Math.cos()
  • 13.20. Java – Метод Math.tan()
  • 13.21. Java – Метод Math.asin()
  • 13.22. Java – Метод Math.acos()
  • 13.23. Java – Метод Math.atan()
  • 13.24. Java – Метод Math.atan2()
  • 13.25. Java – Метод Math.toDegrees()
  • 13.26. Java – Метод Math.toRadians()
  • 13.27. Java – Метод Math.random()
  • 14. Java – Символы
  • 14.1. Java – Метод Character.isLetter()
  • 14.2. Java – Метод Character.isDigit()
  • 14.3. Java – Метод Character.isWhitespace()
  • 14.4. Java – Метод Character.isUpperCase()
  • 14.5. Java – Метод Character.isLowerCase()
  • 14.6. Java – Метод Character.toUpperCase()
  • 14.7. Java – Метод Character.toLowerCase()
  • 14.8. Java – Метод Character.toString()
  • 15. Java – Строки
  • 15.1. Java – Метод charAt()
  • 15.2. Java – Метод compareTo()
  • 15.3. Java – Метод compareToIgnoreCase()
  • 15.4. Java – Метод concat()
  • 15.5. Java – Метод contentEquals()
  • 15.6. Java – Метод copyValueOf()
  • 15.7. Java – Метод endsWith()
  • 15.8. Java – Метод equals()
  • 15.9. Java – Метод equalsIgnoreCase()
  • 15.10. Java – Метод getBytes()
  • 15.11. Java – Метод getChars()
  • 15.12. Java – Метод hashCode()
  • 15.13. Java – Метод indexOf()
  • 15.14. Java – Метод intern()
  • 15.15. Java – Метод lastIndexOf()
  • 15.16. Java – Метод length()
  • 15.17. Java – Метод matches()
  • 15.18. Java – Метод regionMatches()
  • 15.19. Java – Метод replace()
  • 15.20. Java – Метод replaceAll()
  • 15.21. Java – Метод replaceFirst()
  • 15.22. Java – Метод split()
  • 15.23. Java – Метод startsWith()
  • 15.24. Java – Метод subSequence()
  • 15.25. Java – Метод substring()
  • 15.26. Java – Метод toCharArray()
  • 15.27. Java – Метод toLowerCase()
  • 15.28. Java – Метод toString()
  • 15.29. Java – Метод toUpperCase()
  • 15.30. Java – Метод trim()
  • 15.31. Java – Метод valueOf()
  • 15.32. Java – Классы StringBuilder и StringBuffer
  • 15.32.1. Java – Метод append()
  • 15.32.2. Java – Метод reverse()
  • 15.32.3. Java – Метод delete()
  • 15.32.4. Java – Метод insert()
  • 15.32.5. Java – Метод replace()
  • 16. Java – Массивы
  • 17. Java – Дата и время
  • 18. Java – Регулярные выражения
  • 19. Java – Методы
  • 20. Java – Потоки ввода/вывода, файлы и каталоги
  • 20.1. Java – Класс ByteArrayInputStream
  • 20.2. Java – Класс DataInputStream
  • 20.3. Java – Класс ByteArrayOutputStream
  • 20.4. Java – Класс DataOutputStream
  • 20.5. Java – Класс File
  • 20.6. Java – Класс FileReader
  • 20.7. Java – Класс FileWriter
  • 21. Java – Исключения
  • 21.1. Java – Встроенные исключения
  • 22. Java – Вложенные и внутренние классы
  • 23. Java – Наследование
  • 24. Java – Переопределение
  • 25. Java – Полиморфизм
  • 26. Java – Абстракция
  • 27. Java – Инкапсуляция
  • 28. Java – Интерфейсы
  • 29. Java – Пакеты
  • 30. Java – Структуры данных
  • 30.1. Java – Интерфейс Enumeration
  • 30.2. Java – Класс BitSet
  • 30.3. Java – Класс Vector
  • 30.4. Java – Класс Stack
  • 30.5. Java – Класс Dictionary
  • 30.6. Java – Класс Hashtable
  • 30.7. Java – Класс Properties
  • 31. Java – Коллекции
  • 31.1. Java – Интерфейс Collection
  • 31.2. Java – Интерфейс List
  • 31.3. Java – Интерфейс Set
  • 31.4. Java – Интерфейс SortedSet
  • 31.5. Java – Интерфейс Map
  • 31.6. Java – Интерфейс Map.Entry
  • 31.7. Java – Интерфейс SortedMap
  • 31.8. Java – Класс LinkedList
  • 31.9. Java – Класс ArrayList
  • 31.10. Java – Класс HashSet
  • 31.11. Java – Класс LinkedHashSet
  • 31.12. Java – Класс TreeSet
  • 31.13. Java – Класс HashMap
  • 31.14. Java – Класс TreeMap
  • 31.15. Java – Класс WeakHashMap
  • 31.16. Java – Класс LinkedHashMap
  • 31.17. Java – Класс IdentityHashMap
  • 31.18. Java – Алгоритмы Collection
  • 31.19. Java – Iterator и ListIterator
  • 31.20. Java – Comparator
  • 32. Java – Дженерики
  • 33. Java – Сериализация
  • 34. Java – Сеть
  • 34.1. Java – Обработка URL
  • 35. Java – Отправка Email
  • 36. Java – Многопоточность
  • 36.1. Java – Синхронизация потоков
  • 36.2. Java – Межпоточная связь
  • 36.3. Java – Взаимная блокировка потоков
  • 36.4. Java – Управление потоками
  • 37. Java – Основы работы с апплетами
  • 38. Java – Javadoc

Инкапсуляция в Java: просто о сложном

Java – один из самых популярных языков программирования. Он обладает не только простым и понятным синтаксисом, но и позволяет создавать контент для разного рода платформ. На нем написан крупный популярный проект – игра Minecraft.

Java – это язык разработки общего назначения. Он предусматривает концепции объектно-ориентированного программирования в своем составе. Именно об этой особенности зайдет речь далее. Особое внимание будет уделено так называемой инкапсуляции. Предложенная информация пригодится как новичкам, так и тем, кто уже имел опыт в разработке программного обеспечения на Java.

Термины для ООП

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

Чтобы не пришлось постоянно заглядывать в Google для раскрытия тех или иных определений во время написания кода, можно запомнить следующие определения:

  1. Алгоритм – это последовательность действий, приводящая к решению поставленной задачи.
  2. Переменная – именованная ячейка в памяти устройства. С ней можно выполнять разнообразные действия: хранить, считывать, корректировать, удалять.
  3. Оператор – объект, который умеет управлять операндами.
  4. Операнд – некий объект в коде, которым можно манипулировать через операторы.
  5. Итерация – один проход через тот или иной блок кода. Можно назвать это «одной операцией, выполненной в приложении».
  6. API – правила, протоколы и процедуры, при помощи которых создаются программные приложения.
  7. Аргумент – значение, передаваемое в функции/команды.
  8. Символ – элементарная единица отображения информации в коде. Равна одной буквенной записи или символу.
  9. Объект – некая комбинация переменных, которые связаны между собой. Сюда могут быть включены константы и иные структурные данные. Они проходят совместную выборку и обработку.
  10. Класс – связанные объекты, наделенные общими свойствами.
  11. Константа – значение, которое будет всегда оставаться неизменным.
  12. Тип данных – классификация информации определенного типа.
  13. Массив – группы и списки схожих типов значений данных. Они обязательно совместно группируются.
  14. Ключевое слово – слово/фраза, зарезервированное системой (языком программирования). Используется для того, чтобы обозначать разнообразные операции, команды, функции, инструменты в ЯП.

Все это можно отыскать в Google вместе с другими, более сложными понятиями при разработке программного обеспечения. Но предложенная выше информация – это «база», с которой должен ознакомиться каждый разработчик.

Отдельное внимание стоит уделить в ООП такому понятию как «метод». Он в объектно-ориентированном программировании обозначает некую функцию или процедуру, принадлежащую к классу или объекту. Метод включает в себя несколько операторов. Они необходимы для выполнения разного рода действий. Также у метода есть набор входных аргументов.

О методах

Говоря о методах в ООП и Java, стоит отметить, что они бывают, согласно Google, статическими и простыми. Первый тип не имеет доступа к информации объекта, для его применения не нужно создавать экземпляры. Второй обладает доступом к данным объекта (конкретного экземпляра соответствующего класса).

Метод отвечает за предоставление интерфейсов, при помощи которых можно получить доступ к электронным материалам object. Именно он будет отвечать за инкапсуляцию.

Существуют различные уровни доступа, предоставляемые методами:

  • открытый (public string) – общий интерфейс для всех пользователей обозначенного class;
  • защищенный – внутренний интерфейс для наследников;
  • закрытый (private) – интерфейс, доступный исключительно в пределах заданного класса.

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

ООП – это…

ООП (объектно-ориентированное программирование) – это специальная методология программирования, базирующаяся на представлении программ в виде совокупности некоторых объектов, которые взаимодействуют между собой. Каждый компонент будет выступать экземпляром класса. Классы складываются в общую иерархию наследования.

Google указывает на то, что ООП позволяет посмотреть на разработку не «чистой логикой и абстракциями», а в виде моделирования информационных объектов. Это дает возможность улучшить управляемость итоговым контентом.

Ключевые принципы

В объектно-ориентированном программировании используются разнообразные принципы. Google указывает на наличие:

  • абстракций;
  • наследования;
  • полиморфизма;
  • инкапсуляции.

Можно привести простой пример ООП «из обыденной жизни». Google и иные поисковики в качестве такового называют человеческую речь. Она отражает идеологию подхода к разработке, начиная с инкапсуляции представления о предмете в виде его имени и заканчивая полиморфизмом применения слова в переносном смысле. Такое явления позволяет сложить наиболее полное представление через имя объекта до понятия-класса.

Инкапсуляция – определение

Пример инкапсуляции из реальной и обыденной жизни уже был представлен. Теперь стоит рассмотреть соответствующий процесс с точки зрения разработки контента. С этим может справиться даже новичок.

Инкапсуляция, согласно Google – это процесс разделения компонентов абстракций, определяющих структуру и поведение (связь данных и методов). Необходима для того, чтобы изолировать контрактные обязательства абстракции (протоколы и интерфейсы) от их реализации.

Google указывает на то, что на деле это выглядит как разделение приложения на две части: интерфейс и непосредственную реализацию. Во втором случае обеспечивается механизм сокрытия. Он разграничивает доступ к разного рода частям компонента.

Инкапсуляция, по данным Google, характеризуется преимущественно ООП, но на деле она встречается и в других языках. В объектно-ориентированной разработке имеет связи с принципом абстракции данных. В Java обычно рассматривают этот процесс без сокрытия, как неполноценную.

Инкапсуляция – это объединение данных и методов работы с ними в «одной упаковке» («капсуле»). В качестве последней в Java будет выступать класс. Он включает в себя:

  • данные – поля;
  • методы – используются для работы с соответствующей информацией.

В ООП каждая программа инкапсулирована: состоит из классов-капсул, которые одновременно выполняют роль и данных, и методов.

Сокрытие

В Google указано, что при рассмотрении соответствующей темы, целесообразно говорить о процессе под названием «сокрытие». Суть данного процесса заключается в том, что все «внутренности» утилиты будут скрываться от глаз обычного пользователя. Информация о том, «как все работает», не играет для среднестатистического клиента никакой роли.

Вот пример с классом Auto:

Инкапсуляция в Java: просто о сложном

А вот – сокрытие данных в Java:

Инкапсуляция в Java: просто о сложном

Во втором случае основные помощники программиста это:

  • модификаторы доступа (они имеют прямое отношение к методам);
  • геттеры;
  • сеттеры.

Все перечисленные компоненты пригодятся для получения на выходе качественного программного обеспечения.

Особенности

Если инкапсулировать приложения, удастся получить несколько преимуществ. В Google указаны следующие сильные стороны процедуры под названием encapsulation:

  1. Контроль за грамотным поведением объекта. Здесь огромную роль играют методы и уровни доступа.
  2. Составление удобного для пользователя интерфейса. «Снаружи» остается лишь важная для человека информация.
  3. Изменения в исходном коде никак не отражаются на пользователе. Все корректировки осуществляются внутри методов. А за них отвечает разработчик.

Инкапсуляция – это программирование «капсулами». Здесь удастся увидеть еще один пример соответствующей операции, но уже на C++. А быстрее освоить методологию помогут специализированные компьютерные курсы. Их в Google полно, как и сопутствующих материалов.

Руководство по Java Core. Инкапсуляция.

Инкапсуляция – это механизм “обёртывания” данных или кода, который работает с этими данными в отдельный модуль. Инкапсулированные, таким образом, переменные, отделены от других классов и доступ к ним возможен только с помощью методов класса, который содержит эти переменные.

Таким образом, мы, как бы, “прячем” переменные от остальных классов, что облегчает работу с ними в дальнейшем.

В ящике программирования Java, инкапсуляция достигается путём:

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

Для понимания того, как это работает на практике рассмотрим пример простого приложения.

 public class Company < private String companyName; private String companySphere; private String projectName; public String getCompanyName() < return companyName; >public void setCompanyName(String companyName) < this.companyName = companyName; >public String getCompanySphere() < return companySphere; >public void setCompanySphere(String companySphere) < this.companySphere = companySphere; >public String getProjectName() < return projectName; >public void setProjectName(String projectName) < this.projectName = projectName; >@Override public String toString() < return "=============================\n" + "Company Name: " + companyName + "\nSphere:" + companySphere + "\nProject Name: " + projectName + "\n============================\n"; >> 
 public class CompanyRunner < public static void main(String[] args) < Company uksatse = new Company(); uksatse.setCompanyName("UkSATSE"); uksatse.setCompanySphere("Aviation"); uksatse.setProjectName("SkybleLib"); System.out.println("UkSATSE info:"); System.out.println(uksatse); >> 

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

 /*Some system messages*/ UkSATSE info: ============================= Company Name: UkSATSE Sphere:Aviation Project Name: SkybleLib ============================ 

Как мы видим, доступ к переменным класса Company из класса CompanyRunner возможен только с помощью методов getXXX и setXXX.

Инкапсуляция даёт нам следующие преимущества:

  • Класс имеет полный контроль над всеми своими переменными.
  • Другим классам, которые будут использовать данный класс не интересно, как именно хранятся данные в классе. В случае, если нам будет необходимо изменить тип данных, то нам не придётся вносить изменения в другие классы.
  • Мы можем делать поля только для чтения или только для записи.

В этом уроке мы более глубоко изучили что такое инкапсуляция и как она применяется в языке программирования Java.

В следующем уроке мы изучим такое понятие в ООП как абстракция.

Что такое инкапсуляция java

«»» То же и с автомобилем. Неважно, что там происходит у него внутри. Главное — при нажатии правой педали автомобиль едет вперед, а при нажатии левойтормозит. «»» Автор видать на картинге часто гоняет. (:

partiec Уровень 33
27 декабря 2022

В книгах советских времен можно вычитать типа: — Мы с другом ходили на завод пить газировку из автомата. или — Мой дед — литейщик, мог выпить за раз литр ситро! статья в этом стиле ����

Blynchik Уровень 51
16 мая 2022
где-то читал, для чего нужны капсулы из первой картинки
Aleksei Reinsalu Уровень 19
28 ноября 2021

Ок. Либо вообще любое сокрытие методов или данных, либо соединяем данные и методы для этих данных в одном флаконе. Какое умное слово Инкапсуляция однако..

Сообщество

JavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.

Подписывайтесь
Язык интерфейса
«Программистами не рождаются» © 2024 JavaRush
Скачивайте наши приложения
«Программистами не рождаются» © 2024 JavaRush

Этот веб-сайт использует данные cookie, чтобы настроить персонально под вас работу сервиса. Используя веб-сайт, вы даете согласие на применение данных cookie. Больше подробностей — в нашем Пользовательском соглашении.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *