5. Введение в Java. Наследования и ООП. | Технострим
5. Введение в Java. Наследования и ООП. | Технострим
https://www.youtube.com/watch?v=z3PqNsKx2Bo
00:08 Обсуждение наследования и маппинга
• Обсуждение наследования и использования стандартных коллекций, таких как хэшмапы.
• Обсуждение проблем с наследованием и использованием стандартных коллекций.
12:00 Тестирование и проблемы с маппингом
• Обсуждение тестирования и проблем с маппингом.
• Обсуждение того, как маппинг может мешать покупке одинаковых товаров с разными ссылками.
• Обсуждение неявной информации, связанной с маппингом и классами.
19:27 Хэшмапы и связанные списки
• Хэшмапы - это структуры данных, которые используют хэш-коды для быстрого поиска элементов.
• Хэш-коды могут совпадать у разных объектов, что приводит к коллизиям.
• Хэшмапы используют связанные списки для хранения элементов.
• В хэшмапах используются методы для сравнения объектов и определения равенства.
• Класс Object является корнем иерархии классов и наследуется всеми классами.
• Методы клонирования и toString переопределяются для реализации пользовательских функций.
• Хешкоды и иквоусы - это методы, которые используются для сравнения объектов и их полей.
• Хешкод считается по умолчанию, но его можно переопределить.
• Хешкод и иквоус связаны между собой, и если они не соответствуют правилам, то это считается ошибкой.
39:56 Использование хешкодов и иквоусов
• Хешкоды и иквоусы используются в коллекциях, таких как хэшмапы и хэш-сеты.
• Если вы хотите использовать эти коллекции, то вам нужно переопределить методы хешкод и иквоус.
• Хешкоды и иквоусы связаны между собой и должны соответствовать определенным правилам.
• Если вы не выполните эти правила, то это считается ошибкой.
• Обсуждение важности защиты приватных полей от несанкционированного доступа.
• Приватные поля могут быть доступны только через методы, которые возвращают информацию, но не изменяют объект.
47:50 Создание приватных методов
• Приватные методы могут быть созданы для доступа к приватным полям, но только из родительского класса.
• Приватные методы могут быть использованы для согласованных операций с объектом.
51:22 Создание приватных полей
• Приватные поля могут быть созданы для защиты информации от несанкционированного доступа.
• Приватные поля могут быть использованы для хранения информации, которая не должна быть доступна извне.
54:40 Решение проблемы с доступом к приватным полям
• Создание приватных методов для доступа к приватным полям может быть решением проблемы.
• Приватные методы могут быть доступны только из ограниченного количества классов, что обеспечивает безопасность и единоличную ответственность.
56:38 Композиция и наследование в объектно-ориентированном программировании
• В видео обсуждается, как можно использовать композицию и наследование в объектно-ориентированном программировании.
• Композиция позволяет одному классу содержать другой класс, который может быть использован для добавления и удаления объектов.
• Наследование позволяет одному классу наследовать свойства и методы от другого класса.
01:02:55 Примеры использования композиции и наследования
• В примере с магазином, склад может содержать товары, а бэк-стор может добавлять и удалять товары.
• В примере с промоушеном, можно создать класс промоушен, который наследует класс атом и добавляет свои собственные поля и методы.
• В обоих случаях, важно понимать, что каждый класс должен иметь свою собственную ответственность и не вмешиваться в работу других классов.
01:09:08 Ключевые слова для доступа к полям и методам родительского класса
• В случае наследования, ключевое слово "супер" позволяет получить доступ к полям и методам родительского класса.
• Однако, если создать поле с тем же именем, что и поле в родительском классе, то это приведет к созданию двух полей с одинаковым именем, но разных типов.
01:10:40 Модификаторы доступа и наследование
• В видео обсуждаются модификаторы доступа, такие как public, private и protected, и их влияние на наследование.
• Если класс наследуется, то все поля и методы родительского класса становятся доступными для наследника.
01:17:03 Использование модификаторов и наследование
• Если класс является наследником, то он должен корректно инициализировать все поля и методы родительского класса.
• Если класс содержит приватные поля, то они не могут быть доступны из наследника.
• Если класс содержит ключевое слово final, то он не может быть унаследован.
• Если в классе есть приватный конструктор, то он не может быть унаследован.
01:26:01 Паттерн проектирования "синглтон"
• В видео обсуждается паттерн проектирования "синглтон", который позволяет создать один экземпляр класса и использовать его в программе.
• Внутри класса можно получить доступ к приватным полям, используя статические методы.
• В видео объясняется, что абстрактные классы не могут быть созданы, так как они не имеют полной реализации всех своих методов.
• Если у класса есть абстрактные методы, то его нельзя создать, пока все абстрактные методы не будут определены.
01:31:11 Наследование и реализация методов
• Наследование от абстрактного класса позволяет реализовать общие методы, но также может привести к проблемам с пониманием иерархии классов и зависимостей между ними.
• Если метод в родительском классе меняется, это может повлиять на все дочерние классы, что может привести к ошибкам и сложностям в понимании кода.
01:37:00 Динамическая диспетчеризация типов
• В видео объясняется, что в Java есть механизм динамической диспетчеризации типов, который позволяет вызывать методы базового класса, даже если ссылка указывает на дочерний класс.
• Однако, это может привести к проблемам, если иерархия классов становится слишком сложной и запутанной.
01:40:34 Проблемы с наследованием и композицией
• В видео обсуждаются проблемы с наследованием и композицией в программировании.
• Наследование может быть сложным для понимания, особенно когда иерархия становится слишком глубокой.
• Композиция может быть сложной из-за большого количества объектов и методов, которые нужно вызывать.
01:42:01 Примеры использования наследования и композиции
• В примере с классом Point, композиция выглядит как класс Point, который содержит класс ColorPoint, который добавляет цвет к Point.
• В примере с коллекциями, такими как ArrayList, HashSet и HashMap, композиция может быть сложной из-за большого количества классов и методов, которые нужно использовать.
• В случае с файлами, композиция может быть сложной из-за большого количества маленьких классов, которые нужно использовать для работы с файлами.
01:50:43 Интерфейсы и их использование
• Интерфейсы определяют контракт класса, то есть публичное API, которое класс предоставляет.
• В идеальном мире, интерфейс содержит только публичные методы, и класс не должен содержать ничего лишнего.
• Примеры интерфейсов: коллекция, итератор, итератор.
01:53:06 Коллекции и их использование
• Интерфейс коллекции определяет методы, полезные для всех коллекций, такие как размер, проверка на пустоту, итератор для обхода элементов.
• Мап не является коллекцией, но может быть обходом с помощью интерфейса итератора.
• Мап представляет отображение элементов, а не группу элементов.
01:57:25 Использование интерфейсов и спецификаций
• Интерфейсы используются для ссылки на коллекцию в коде, а для работы с коллекцией без дубликатов используется интерфейс сет.
• Джава док считается весомым аргументом, и разработчики должны соблюдать его, если они переопределяют интерфейсы.