Файл: Инкапсуляция скрытие своих и внутренних методов в классе и предоставление к ним доступа через публичные (доступные другим классам) методы (геттеры, сеттеры). Как применяется инкапсуляция.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 30.11.2023
Просмотров: 94
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
ООПОбъектно-ориентированное программирование (ООП) — парадигма программирования, сменившая процедурное программирование (последовательное, алгоритмичное), в которой основными концепциями являются понятия объектов и классов.ИнкапсуляцияИнкапсуляция в Java является механизмом обёртывания данных (переменных) и кода, работающего с данными (методами), в одно целое.В инкапсуляции переменные класса будут скрыты от других классов и доступ к ним может быть получен только с помощью метода их текущего класса. По-другому это называется скрытием данных.Инкапсуляция - скрытие своих и внутренних методов в классе и предоставление к ним доступа через публичные (доступные другим классам) методы (геттеры, сеттеры).Как применяется инкапсуляцияЕсть несколько способов регулировать доступ к нашим данным. Основные это:
ПримерПредставим, что у нас есть такая структура:
Вверху иерархии классов стоит класс Animal. Его наследуют три класса - Cat, Dog и Cow.У класса "Animal" есть метод "голос" (voice). Этот метод выводит на экран сообщение "Голос". Естественно, ни собака, ни кошка не говорят "Голос" Они гавкают и мяукают. Соответственно, Вам нужно задать другой метод для классов Cat, Dog и Cow - чтобы кошка мяукала, собака гавкала, а корова говорила "Муу".Поэтому, в классах-наследниках мы переопределяем метод voice(), чтобы мы в консоли получали "Мяу", "Гав" и "Муу".
-
Модификаторы доступа (Access modifiers) -
Геттеры и Сеттеры (Getters and Setters)
-
public - "публичный, доступный всем" -
default - "по умолчанию". Когда мы не пишем модификатора доступа (как мы это делали в наших предыдущих уроках), он по умолчанию имеет значение default. Данные с этим модификатором видны в пределах package. -
protected - "защищенный". На самом деле это то же самое, что и default, только доступ имеют еще и классы-наследники. -
private - "частный, личный". Такие данные видны только самому классу.
Как проявляется полиморфизм
Дело в том, что если бы в Java не было принципа полиморфизма, компилятор бы интерпретировал это как ошибку:Как видите, методы на картинке отличаются значениями, которые они принимают:-
первый принимает int -
а второй принимает String
Перегрузка методов
То, что мы показывали выше - несколько методов с одним названием и разными параметрами - называется перегрузкой. Но это был пример перегрузки метода в одном классе. Но бывает еще один случай - переопределение методов родительского класса.Переопределение методов родителя
Когда мы наследуем какой-либо класс, мы наследуем и все его методы. Но если нам хочется изменить какой-либо из методов, который мы наследуем, мы можем всего-навсего переопределить его. Мы не обязаны, например, создавать отдельный метод с похожим названием для наших нужд, а унаследованный метод будет "мертвым грузом" лежать в нашем классе.Именно то, что мы можем создать в классе-наследнике класс с таким же названием, как и класс, который мы унаследовали от родителя, и называется переопределением.ПримерПредставим, что у нас есть такая структура:
-
Обратите внимание: перед методом, который мы переопределяем, пишем "@Override". Это дает понять компилятору, что мы хотим переопределить метод.
Так что же такое полиморфизм
Тем не менее, полиморфизм - это принцип. Все реальные примеры, которые мы приведодили выше - это только способы реализации полиморфизма.Давайте снова посмотрим на определение, которое мы давали в начале статьи:Полиморфизм - возможность применения одноименных методов с одинаковыми или различными наборами параметров в одном классе или в группе классов, связанных отношением наследования.Выглядит понятнее, правда? Мы показали, как можно:-
создавать "одноименные методы" в одном классе ("перегрузка методов") -
или изменить поведение методов родительского класса ("переопределение методов").
-
Наследование - выделение общих свойств и методов в родительский класс. extends - расширение родительского класса. -
Инкапсуляция - скрытие своих и внутренних методов в классе и предоставление к ним доступа через публичные (доступные другим классам) методы (геттеры, сеттеры). -
Полиморфизм - это способность метода принимать в качестве аргумента и обрабатывать разные типы информации.
-
(?) иногда выделяют еще Абстракцию - при подходе к задаче отойти от частности (желтый автомобиль пикап с двигателем 3.0) и перейти к более обширному понятию (сущность - автомобиль) - Абстракции.
Класс — это шаблонная конструкция, которая позволяет описать в программе объект, его свойства (атрибуты или поля класса) и поведение (методы класса). Каждый класс имеет своё имя, чтобы в будущем к нему можно было обратиться.
Объект - конкретный экземпляр класса, который имеет свои собственные конкретные значения свойств.Свойства класса - поле данных класса (переменные, массивы и т.п)Метод класса - функция, которая описывает то, как сущность выполняет определенные действия.Перегрузка методов:- Все методы в Java могут быть перегружены (кроме final)- Перегруженный в дочернем классе метод, будет вызван для объекта данного класса, вместо метода родительского класса.- Если метод не был перегружен, то будет вызвана реализация родительского класса. @Override — проверяет, переопределен ли метод. Вызывает ошибкукомпиляции / интерпретации, если метод не найден в родительском классе или интерфейсе;NEW - это оператор, который создает новые объекты класса. Он:-
выделяет память под объект -
создает объект (вызывает конструктор) -
возвращает ссылку на созданный объект
Модификаторы доступа:
-
public - доступно всем -
protected - доступно только внутри пакета и наследникам -
default - доступно только в пакете класса -
private - доступно только внутри класса