May 17, 2024

5. Введение в Java. Наследования и ООП. | Технострим  

5. Введение в Java. Наследования и ООП. | Технострим

https://www.youtube.com/watch?v=z3PqNsKx2Bo

00:08 Обсуждение наследования и маппинга

• Обсуждение наследования и использования стандартных коллекций, таких как хэшмапы.
• Обсуждение проблем с наследованием и использованием стандартных коллекций.

12:00 Тестирование и проблемы с маппингом

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

19:27 Хэшмапы и связанные списки

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

24:01 Методы и классы

• В хэшмапах используются методы для сравнения объектов и определения равенства.
• Класс Object является корнем иерархии классов и наследуется всеми классами.
• Методы клонирования и toString переопределяются для реализации пользовательских функций.

32:25 Хешкоды и иквоусы

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

39:56 Использование хешкодов и иквоусов

• Хешкоды и иквоусы используются в коллекциях, таких как хэшмапы и хэш-сеты.
• Если вы хотите использовать эти коллекции, то вам нужно переопределить методы хешкод и иквоус.
• Хешкоды и иквоусы связаны между собой и должны соответствовать определенным правилам.
• Если вы не выполните эти правила, то это считается ошибкой.

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

• Обсуждение важности защиты приватных полей от несанкционированного доступа.
• Приватные поля могут быть доступны только через методы, которые возвращают информацию, но не изменяют объект.

47:50 Создание приватных методов

• Приватные методы могут быть созданы для доступа к приватным полям, но только из родительского класса.
• Приватные методы могут быть использованы для согласованных операций с объектом.

51:22 Создание приватных полей

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

54:40 Решение проблемы с доступом к приватным полям

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

56:38 Композиция и наследование в объектно-ориентированном программировании

• В видео обсуждается, как можно использовать композицию и наследование в объектно-ориентированном программировании.
• Композиция позволяет одному классу содержать другой класс, который может быть использован для добавления и удаления объектов.
• Наследование позволяет одному классу наследовать свойства и методы от другого класса.

01:02:55 Примеры использования композиции и наследования

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

01:09:08 Ключевые слова для доступа к полям и методам родительского класса

• В случае наследования, ключевое слово "супер" позволяет получить доступ к полям и методам родительского класса.
• Однако, если создать поле с тем же именем, что и поле в родительском классе, то это приведет к созданию двух полей с одинаковым именем, но разных типов.

01:10:40 Модификаторы доступа и наследование

• В видео обсуждаются модификаторы доступа, такие как public, private и protected, и их влияние на наследование.
• Если класс наследуется, то все поля и методы родительского класса становятся доступными для наследника.

01:17:03 Использование модификаторов и наследование

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

01:22:05 Запрет наследования

• Если класс содержит ключевое слово final, то он не может быть унаследован.
• Если в классе есть приватный конструктор, то он не может быть унаследован.

01:26:01 Паттерн проектирования "синглтон"

• В видео обсуждается паттерн проектирования "синглтон", который позволяет создать один экземпляр класса и использовать его в программе.
• Внутри класса можно получить доступ к приватным полям, используя статические методы.

01:28:35 Абстрактные классы

• В видео объясняется, что абстрактные классы не могут быть созданы, так как они не имеют полной реализации всех своих методов.
• Если у класса есть абстрактные методы, то его нельзя создать, пока все абстрактные методы не будут определены.

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 Использование интерфейсов и спецификаций

• Интерфейсы используются для ссылки на коллекцию в коде, а для работы с коллекцией без дубликатов используется интерфейс сет.
• Джава док считается весомым аргументом, и разработчики должны соблюдать его, если они переопределяют интерфейсы.