Язык программирования Java: ооп
Наследо- вание:
Абстрактный класс:
Абстрактный класс:
Абстрактный класс:
Зачем нужно:
Пример 1:
Пример 2: хрестоматийным примером является система геометрических фигур. В реальности не существует геометрической фигуры как
Иерархия наследования:
Модификаторы доступа:
Модификатор private:
Модификатор public:
Модификатор protected:
Модификатор final:
Класс Object:
Иерархия наследования:
Иерархия наследования:
Иерархия наследования:
Иерархия наследования:
Проектирование иерархии классов:
Проектирование иерархии классов:
Оператор instanceof:
Оператор instanceof:
Класс Object: Метод toString:
Класс Object: Метод toString:
Класс Object: Метод hashCode:
Класс Object: Метод hashCode:
Класс Object: Метод equals:
Класс Object: Метод equals:
Проверка принадлежности классу. Ключевое слово instanceof:
Класс Object: метод finalize():
Класс Object: метод finalize():
Лабораторная работа 5 «Создание программ с использованием класса Object»:
2.46M
Category: programmingprogramming

Язык программирования Java. Абстрактные классы. Класс OBJECT

1. Язык программирования Java: ооп

ЯЗЫК ПРОГРАММИРОВАНИЯ
JAVA: ООП
АБСТРАКТНЫЕ КЛАССЫ.
КЛАСС OBJECT.

2. Наследо- вание:

3. Абстрактный класс:

АБСТРАКТНЫЙ КЛАСС:
Абстрактный класс похож на обычный класс.
В абстрактном классе также можно определить поля
и методы, но в то же время нельзя создать объект или
экземпляр абстрактного класса.
Абстрактные классы призваны предоставлять
базовый функционал для классов-наследников.
А производные классы уже реализуют этот
функционал.
При определении абстрактных классов используется
ключевое слово abstract:

4. Абстрактный класс:

АБСТРАКТНЫЙ КЛАСС:
Нельзя использовать конструктор абстрактного класса
для создания его объекта.
Кроме обычных методов абстрактный класс может
содержать абстрактные методы.
Такие методы определяются с помощью ключевого
слова abstract и не имеют никакой реализации:

5. Абстрактный класс:

АБСТРАКТНЫЙ КЛАСС:
Абстрактные классы призваны предоставлять базовый
функционал для классов-наследников.
А производные классы уже реализуют этот
функционал.
Производный класс обязан переопределить и
реализовать все абстрактные методы, которые
имеются в базовом абстрактном классе.
Также следует учитывать, что если класс имеет хотя
бы один абстрактный метод, то данный класс
должен быть определен как абстрактный.

6. Зачем нужно:

ЗАЧЕМ НУЖНО:
Допустим, мы делаем программу для обслуживания
банковских операций и определяем в ней три класса:
Person, который описывает человека, Employee,
который описывает банковского служащего, и класс
Client, который представляет клиента банка.
Очевидно, что классы Employee и Client будут
производными от класса Person, так как оба класса
имеют некоторые общие поля и методы.
И так как все объекты будут представлять либо
сотрудника, либо клиента банка, то напрямую мы от
класса Person создавать объекты не будем.
Поэтому имеет смысл сделать его абстрактным.

7. Пример 1:

ПРИМЕР 1:

8. Пример 2: хрестоматийным примером является система геометрических фигур. В реальности не существует геометрической фигуры как

ПРИМЕР 2: ХРЕСТОМАТИЙНЫМ ПРИМЕРОМ ЯВЛЯЕТСЯ
СИСТЕМА ГЕОМЕТРИЧЕСКИХ ФИГУР. В РЕАЛЬНОСТИ НЕ
СУЩЕСТВУЕТ ГЕОМЕТРИЧЕСКОЙ ФИГУРЫ КАК ТАКОВОЙ.
ЕСТЬ КРУГ, ПРЯМОУГОЛЬНИК, КВАДРАТ, НО ПРОСТО ФИГУРЫ
НЕТ. ОДНАКО ЖЕ И КРУГ, И ПРЯМОУГОЛЬНИК ИМЕЮТ ЧТОТО ОБЩЕЕ И ЯВЛЯЮТСЯ ФИГУРАМИ:

9. Иерархия наследования:

ИЕРАРХИЯ НАСЛЕДОВАНИЯ:

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

МОДИФИКАТОРЫ ДОСТУПА:
Модификаторы доступа — это чаще всего ключевые
слова, которые регулируют уровень доступа к разным
частям твоего кода.
Модификаторы доступа в Java:
private;
protected;
public

11. Модификатор private:

МОДИФИКАТОР PRIVATE:
наиболее строгий модификатор доступа. Он
ограничивает видимость данных и методов пределами
одного класса.
Назначение - реализация инкапсуляции в
программе.

12. Модификатор public:

МОДИФИКАТОР PUBLIC:
Части кода, помеченные модификатором public,
предназначаются для конечного пользователя.
Пример из жизни:
private — это все процессы, происходящие внутри
телевизора, когда он работает,
public — это кнопки на пульте телевизора, с помощью
которых пользователь может им управлять.

13. Модификатор protected:

МОДИФИКАТОР PROTECTED:
Поля и методы, обозначенные модификатором доступа
protected, будут видны:
в пределах всех классов, находящихся в том же
пакете, что и наш;
в пределах всех классов-наследников нашего
класса.

14. Модификатор final:

МОДИФИКАТОР FINAL:
запретить наследование можно с помощью ключевого
слова final

15. Класс Object:

КЛАСС OBJECT:
Фактически все классы наследуются от класса Object.
Все остальные классы, даже те, которые мы добавляем
в свой проект, являются неявно производными от класса
Object.
Поэтому все типы и классы могут реализовать те
методы, которые определены в классе Object.

16. Иерархия наследования:

ИЕРАРХИЯ НАСЛЕДОВАНИЯ:
В этой иерархии классов можно проследить следующую
цепь наследования:
Object -> Person -> Employee|Client:
все классы неявно наследуются от типа Object
Суперклассы обычно размещаются выше подклассов,
поэтому на вершине наследования находится класс
Object, а в самом низу Employee и Client.

17. Иерархия наследования:

ИЕРАРХИЯ НАСЛЕДОВАНИЯ:

18. Иерархия наследования:

ИЕРАРХИЯ НАСЛЕДОВАНИЯ:

19. Иерархия наследования:

ИЕРАРХИЯ НАСЛЕДОВАНИЯ:

20. Проектирование иерархии классов:

ПРОЕКТИРОВАНИЕ ИЕРАРХИИ КЛАССОВ:
Это так называемое восходящее преобразование (от
подкласса внизу к суперклассу вверху иерархии). Такое
преобразование осуществляется автоматически.

21. Проектирование иерархии классов:

ПРОЕКТИРОВАНИЕ ИЕРАРХИИ КЛАССОВ:
Обратное не всегда верно. Например, объект Person не
всегда является объектом Employee или Client. Поэтому
нисходящее преобразование от суперкласса к подклассу
автоматически не выполняется. В этом случае нам надо
использовать операцию преобразования типов.

22. Оператор instanceof:

ОПЕРАТОР INSTANCEOF:
В примере выше мы явно видим, что переменная kate -
это ссылка на объект Client, а не Employee. Однако
нередко данные приходят извне, и мы можем точно не
знать, какой именно объект эти данные представляют.
Соответственно возникает большая вероятность
столкнуться с ошибкой. И перед тем, как провести
преобразование типов, мы можем проверить, а можем
ли мы выполнить приведение с помощью
оператора instanceof.

23. Оператор instanceof:

ОПЕРАТОР INSTANCEOF:
Выражение kate instanceof Employee проверяет,
является ли переменная kate объектом типа Employee.
Но так как в данном случае явно не является, то такая
проверка вернет значение false, и преобразование не
сработает.
А выражение kate instanceof Client возвратило
бы true:

24. Класс Object: Метод toString:

КЛАСС OBJECT: МЕТОД TOSTRING:
Метод toString служит для получения представления
данного объекта в виде строки. При попытке вывести
строковое представления какого-нибудь объекта, как
правило, будет выводиться полное имя класса.
Например:

25. Класс Object: Метод toString:

КЛАСС OBJECT: МЕТОД TOSTRING:
Так как полученное значение (в данном случае
Person@7960847b) не является хорошим строковым
описанием объекта, метод toString() обычно
переопределяют
Например:

26. Класс Object: Метод hashCode:

КЛАСС OBJECT: МЕТОД HASHCODE:
Метод hashCode позволяет задать некоторое числовое
значение, которое будет соответствовать данному
объекту или его хэш-код. По данному числу, например,
можно сравнивать объекты. Например, выведем
представление вышеопределенного объекта:

27. Класс Object: Метод hashCode:

КЛАСС OBJECT: МЕТОД HASHCODE:
Но мы можем задать свой алгоритм определения хэш-
кода объекта:

28. Класс Object: Метод equals:

КЛАСС OBJECT: МЕТОД EQUALS:
Метод equals сравнивает два объекта на равенство:

29. Класс Object: Метод equals:

КЛАСС OBJECT: МЕТОД EQUALS:
Метод equals сравнивает два объекта на равенство:

30. Проверка принадлежности классу. Ключевое слово instanceof:

ПРОВЕРКА ПРИНАДЛЕЖНОСТИ КЛАССУ.
КЛЮЧЕВОЕ СЛОВО INSTANCEOF:
Метод equals принимает в качестве параметра объект
любого типа, который мы затем приводим к текущему,
если они являются объектами одного класса.
Оператор instanceof позволяет выяснить, является ли
переданный в качестве параметра объект объектом
определенного класса, в данном случае класса Person.
Если объекты принадлежат к разным классам, то их
сравнение не имеет смысла, и возвращается значение
false.
Затем сравниваем по именам. Если они совпадают,
возвращаем true, что будет говорить, что объекты
равны.

31. Класс Object: метод finalize():

КЛАСС OBJECT: МЕТОД FINALIZE():
Этот метод вызывается Java-машиной у объекта перед
тем, как объект будет уничтожен.
Фактически этот метод – противоположность
конструктору.
В нем можно освобождать ресурсы, используемые
объектом.
Этот метод есть у класса Object и, следовательно, есть
в каждом классе.
Но можно просто написать в своем классе такой же
метод, и он будет вызываться перед уничтожением
объектов этого класса.
Метод System.gc() - сборщик мусора.

32. Класс Object: метод finalize():

КЛАСС OBJECT: МЕТОД FINALIZE():
ПРИМЕР:

33. Лабораторная работа 5 «Создание программ с использованием класса Object»:

ЛАБОРАТОРНАЯ РАБОТА 5
«СОЗДАНИЕ ПРОГРАММ С ИСПОЛЬЗОВАНИЕМ
КЛАССА OBJECT»:
Разработать приложение, в котором:
Описаны классы Person -> Employee|Client
Созданы объекты перечисленных классов на основе
класса Object
Использовать метод toString для получения
представления данных объектов в виде строки
Выполнить сравнение созданных объектов с помощью
метода equals
English     Русский Rules