Концепции ООП позволяют нам создавать определенные взаимодействия между объектами 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:
- Два отдельных класса связаны через свои объекты.
- Два класса не связаны друг с другом, каждый может существовать без другого.
- Может быть связью «один к одному», «один ко многим», «многие к одному» или «многие ко многим».