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

Вот четыре основных принципа более подробно. из Обучения курсу Java в Ченнаи.

Абстракция

Абстракция направлена ​​на то, чтобы скрыть сложность от пользователей и показать им только актуальную информацию. Например, если вы хотите водить машину, вам не нужно знать о ее внутреннем устройстве. То же самое относится и к классам Java. Вы можете скрыть детали внутренней реализации, используя абстрактные классы или интерфейсы. На абстрактном уровне вам нужно только определить сигнатуры методов (имя и список параметров) и позволить каждому классу реализовать их по-своему.

Абстракция в Java:

  • Скрывает основную сложность данных
  • Помогает избежать повторяющегося кода
  • Представляет только сигнатуру внутренней функциональности
  • Дает программистам гибкость для изменения реализации абстрактного поведения.
  • Частичная абстракция (0–100%) может быть достигнута с помощью абстрактных классов.
  • Полная абстракция (100%) может быть достигнута с помощью интерфейсов

Инкапсуляция

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

Инкапсуляция в Java:

  • Ограничивает прямой доступ к элементам данных (полям) класса.
  • Поля установлены как частные
  • Каждое поле имеет метод получения и установки
  • Методы получения возвращают поле
  • Методы Setter позволяют нам изменить значение поля

Полиморфизм

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

Полиморфизм в Java:

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

Наследование

Наследование позволяет создать дочерний класс, который наследует поля и методы родительского класса. Дочерний класс может переопределять значения и методы родительского класса, однако в этом нет необходимости. Он также может добавлять новые данные и функции к своему родителю. Родительские классы также называются суперклассами или базовыми классами, а дочерние классы также известны как подклассы или производные классы. Java использует ключевое слово extends для реализации принципа наследования в коде.

Наследование в Java:

  • Класс (дочерний класс) может расширять другой класс (родительский класс), наследуя его свойства.
  • Реализует принцип программирования DRY (не повторяйся).
  • Улучшает повторное использование кода.
  • В Java разрешено многоуровневое наследование (дочерний класс также может иметь свой собственный дочерний класс).
  • Множественное наследование не разрешено в Java (класс не может расширять более одного класса).

Ассоциация

Помимо четырех основных принципов ООП, Java также работает с тремя дополнительными концепциями (ассоциация, агрегация, композиция), которые вы можете использовать при разработке своих программ. Агрегация — это особая форма ассоциации, а композиция — это особая форма агрегации.

Ассоциация просто означает акт установления отношений между двумя несвязанными классами. Например, когда вы объявляете два поля разных типов (например, Car и Bicycle) в одном классе и заставляете их взаимодействовать друг с другом, вы выполняете ассоциацию.

Ассоциация в Java:

  • Два отдельных класса связаны через свои объекты.
  • Два класса не связаны друг с другом, каждый может существовать без другого.
  • Может быть связью «один к одному», «один ко многим», «многие к одному» или «многие ко многим».