Similar presentations:
Язык программирования 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