Почему метод clone объявлен как protected?
Метод clone() по умолчанию объявлен как protected, чтобы ограничить возможность клонирования объектов.
Если бы метод был public, то любой код мог бы клонировать объекты класса. А это не всегда желательно по соображениям безопасности и корректности программы.
С protected доступом клонирование разрешено только внутри класса и его наследников. Таким образом разработчик класса может сам решить, будет ли класс поддерживать клонирование и как именно оно будет реализовано в методе clone().
Делая клонирование protected по умолчанию, Java принуждает разработчика сознательно разрешить клонирование класса путем переопределения метода clone() как public в самом классе.
Это позволяет более гибко контролировать возможности клонирования в каждом конкретном классе.
👉 @java_geek
Метод clone() по умолчанию объявлен как protected, чтобы ограничить возможность клонирования объектов.
Если бы метод был public, то любой код мог бы клонировать объекты класса. А это не всегда желательно по соображениям безопасности и корректности программы.
С protected доступом клонирование разрешено только внутри класса и его наследников. Таким образом разработчик класса может сам решить, будет ли класс поддерживать клонирование и как именно оно будет реализовано в методе clone().
Делая клонирование protected по умолчанию, Java принуждает разработчика сознательно разрешить клонирование класса путем переопределения метода clone() как public в самом классе.
Это позволяет более гибко контролировать возможности клонирования в каждом конкретном классе.
👉 @java_geek
👍4❤1
Расскажите о различиях вложенных классов: простых и статических?
Простые вложенные классы используются для тесной связи с внешним классом, а статические — когда нужно логически сгруппировать некоторый функционал.
Основные различия:
- Простой вложенный класс имеет доступ к членам внешнего класса, статический - нет.
- Для создания экземпляра простого вложенного класса нужен экземпляр внешнего класса, для статического - нет.
- Простой вложенный класс зависит от экземпляра внешнего класса, статический - нет.
👉 @java_geek
Простые вложенные классы используются для тесной связи с внешним классом, а статические — когда нужно логически сгруппировать некоторый функционал.
Основные различия:
- Простой вложенный класс имеет доступ к членам внешнего класса, статический - нет.
- Для создания экземпляра простого вложенного класса нужен экземпляр внешнего класса, для статического - нет.
- Простой вложенный класс зависит от экземпляра внешнего класса, статический - нет.
👉 @java_geek
❤3
19 ноября(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.
Как это будет:
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot
Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
Зачем нужен HashMap, если есть Hashtable?
☕ Методы класса Hashtable синхронизированы, что приводит к снижению производительности, а HashMap - нет;
☕ HashTable не может содержать элементы null, тогда как HashMap может содержать один ключ null и любое количество значений null;
☕ Iterator у HashMap, в отличие от Enumeration у HashTable, работает по принципу «fail-fast» (выдает исключение при любой несогласованности данных).
Hashtable это устаревший класс и его использование не рекомендовано.
👉 @java_geek
☕ Методы класса Hashtable синхронизированы, что приводит к снижению производительности, а HashMap - нет;
☕ HashTable не может содержать элементы null, тогда как HashMap может содержать один ключ null и любое количество значений null;
☕ Iterator у HashMap, в отличие от Enumeration у HashTable, работает по принципу «fail-fast» (выдает исключение при любой несогласованности данных).
Hashtable это устаревший класс и его использование не рекомендовано.
👉 @java_geek
👍2❤1