Главная страница
Навигация по странице:

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

  • Как применяется инкапсуляция

  • Модификаторы доступа

  • Перегрузка методов

  • Animal

  • Cat

  • voice()

  • Так что же такое полиморфизм

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

  • Полиморфизм

  • Абстракцию

  • — это шаблонная конструкция, которая позволяет описать в программе объект, его свойства (атрибуты или поля

  • имеет своё имя, чтобы в будущем к нему можно было обратиться.

  • Свойства класса

  • Перегрузка методов

  • Конструктор

  • ооп. ООП. Инкапсуляция скрытие своих и внутренних методов в классе и предоставление к ним доступа через публичные (доступные другим классам) методы (геттеры, сеттеры). Как применяется инкапсуляция


    Скачать 83.12 Kb.
    НазваниеИнкапсуляция скрытие своих и внутренних методов в классе и предоставление к ним доступа через публичные (доступные другим классам) методы (геттеры, сеттеры). Как применяется инкапсуляция
    Дата22.05.2023
    Размер83.12 Kb.
    Формат файлаdocx
    Имя файлаООП.docx
    ТипДокументы
    #1150415

    ООП

    Объектно-ориентированное программирование (ООП) — парадигма программирования, сменившая процедурное программирование (последовательное, алгоритмичное), в которой основными концепциями являются понятия объектов и классов.

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

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

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

    Инкапсуляция - скрытие своих и внутренних методов в классе и предоставление к ним доступа через публичные (доступные другим классам) методы (геттеры, сеттеры).

    Как применяется инкапсуляция

    Есть несколько способов регулировать доступ к нашим данным. Основные это:

    • Модификаторы доступа (Access modifiers)

    • Геттеры и Сеттеры (Getters and Setters)

    Модификаторы доступа

    Модификаторы доступа - это специальные слова, которые показывают, кому нельзя, а кому можно пользоваться данными.

    Существуют четыре модификатора доступа:



    На самом деле по названиям не сложно понять, что каждый из них означает:

    • public - "публичный, доступный всем"

    • default - "по умолчанию". Когда мы не пишем модификатора доступа (как мы это делали в наших предыдущих уроках), он по умолчанию имеет значение default. Данные с этим модификатором видны в пределах package.

    • protected - "защищенный". На самом деле это то же самое, что и default, только доступ имеют еще и классы-наследники.

    • private - "частный, личный". Такие данные видны только самому классу.

    Гетеры и Сеттеры

    Создавая новый класс, Вы должны думать не только о функциональности, но и о безопасности - кто и при каких условиях может получать доступ к внутренностям Вашего класса.

    Полиморфизм

    Полиморфизм - это возможность применения одноименных методов с одинаковыми или различными наборами параметров в одном классе или в группе классов, связанных отношением наследования.

    Как проявляется полиморфизм


    Дело в том, что если бы в Java не было принципа полиморфизма, компилятор бы интерпретировал это как ошибку:



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

    • первый принимает int

    • а второй принимает String

    Однако, поскольку в  Java используется принцип полиморфизма, компилятор не будет воспринимать это как ошибку, потому что такие методы будут считаться разными:



    Называть методы одинаково - это очень удобно. Например, если у нас есть метод, который ищет корень квадратный из числа, гораздо легче запомнить одно название (например, sqrt()), чем по одному отдельному названию на этот же метод, написанный для каждого типа:



    Как видите, мы не должны придумывать отдельное название для каждого метода - а главное их запоминать! Очень удобно.

    Теперь Вы можете понять, почему часто этот принцип описывают фразой:

    Один интерфейс - много методов

    Это предполагает, что мы можем заполнить одно название (один интерфейс), по которому мы сможем обращаться к нескольким методам.

    Перегрузка методов


    То, что мы показывали выше - несколько методов с одним названием и разными параметрами - называется перегрузкой. Но это был пример перегрузки метода в одном классе. Но бывает еще один случай - переопределение методов родительского класса.

    Переопределение методов родителя


    Когда мы наследуем какой-либо класс, мы наследуем и все его методы. Но если нам хочется изменить какой-либо из методов, который мы наследуем, мы можем всего-навсего переопределить его. Мы не обязаны, например, создавать отдельный метод с похожим названием для наших нужд, а унаследованный метод будет "мертвым грузом" лежать в нашем классе.

    Именно то, что мы можем создать в классе-наследнике класс с таким же названием, как и класс, который мы унаследовали от родителя, и называется переопределением.

    Пример

    Представим, что у нас есть такая структура:

    Вверху иерархии классов стоит класс Animal. Его наследуют три класса - CatDog и Cow.

    У класса "Animal" есть метод "голос" (voice). Этот метод выводит на экран сообщение "Голос". Естественно, ни собака, ни кошка не говорят "Голос"   Они гавкают и мяукают. Соответственно, Вам нужно задать другой метод для классов CatDog и Cow - чтобы кошка мяукала, собака гавкала, а корова говорила "Муу".

    Поэтому, в классах-наследниках мы переопределяем метод voice(), чтобы мы в консоли получали "Мяу", "Гав" и "Муу".

    • Обратите внимание: перед методом, который мы переопределяем, пишем "@Override". Это дает понять компилятору, что мы хотим переопределить метод.

    Так что же такое полиморфизм


    Тем не менее, полиморфизм - это принцип. Все реальные примеры, которые мы приведодили выше - это только способы реализации полиморфизма.

    Давайте снова посмотрим на определение, которое мы давали в начале статьи:

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

    Выглядит понятнее, правда? Мы показали, как можно:

    • создавать "одноименные методы" в одном классе ("перегрузка методов")

    • или изменить поведение методов родительского класса ("переопределение методов").

    Все это - проявления "повышенной гибкости" объектно-ориентированных языков благодаря полиморфизму.

    • Наследование - выделение общих свойств и методов в родительский класс. extends - расширение родительского класса.

    • Инкапсуляция - скрытие своих и внутренних методов в классе и предоставление к ним доступа через публичные (доступные другим классам) методы (геттеры, сеттеры).

    • Полиморфизм - это способность метода принимать в качестве аргумента и обрабатывать разные типы информации. 


    • (?) иногда выделяют еще Абстракцию - при подходе к задаче отойти от частности (желтый автомобиль пикап с двигателем 3.0) и перейти к более обширному понятию (сущность - автомобиль) - Абстракции.
    Класс — это шаблонная конструкция, которая позволяет описать в программе объект, его свойства (атрибуты или поля класса) и поведение (методы класса). Каждый класс имеет своё имя, чтобы в будущем к нему можно было обратиться.

    Объект - конкретный экземпляр класса, который имеет свои собственные конкретные значения свойств.

    Свойства класса - поле данных класса (переменные, массивы и т.п)

    Метод класса - функция, которая описывает то, как сущность выполняет определенные действия.

    Перегрузка методов:

    - Все методы в Java могут быть перегружены (кроме final)

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

    - Если метод не был перегружен, то будет вызвана реализация родительского класса. 

    @Override — проверяет, переопределен ли метод. Вызывает ошибку компиляции / интерпретации, если метод не найден в родительском классе или интерфейсе;

    NEW - это оператор, который создает новые объекты класса. Он:

    • выделяет память под объект

    • создает объект (вызывает конструктор)

    • возвращает ссылку на созданный объект

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

    Пакет состоит из 3 составляющих - тип домена (com, edu, ru), имя компании, или фамилия и третья - имя проекта. Для того, чтобы классы не пересекались (конвенция).

    Пакеты используются для того, чтобы логически группировать различные классы.
    Модификаторы доступа:


    ключевое слово super - обращение к родительскому классу.


    написать администратору сайта