Наследование в Java простыми словами. Часть 5.
Как запретить наследование в Java?
Запретить создание подкласса можно просто применив ключевое слово final. Если класс отмечен как final, то никакой класс не может унаследовать от него элементы.
В результате мы получим ошибку.
На Картинке класс Pet обозначен как final, поэтому класс Kitty не может получить от него ни поля ни переменные.
✅ JavaStart. Подписаться
Как запретить наследование в Java?
Запретить создание подкласса можно просто применив ключевое слово final. Если класс отмечен как final, то никакой класс не может унаследовать от него элементы.
В результате мы получим ошибку.
На Картинке класс Pet обозначен как final, поэтому класс Kitty не может получить от него ни поля ни переменные.
Please open Telegram to view this post
VIEW IN TELEGRAM
✍4👍3👨💻2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁5🔥3❤2
Что вернёт метод?
Optional<Integer> opt = Optional.empty();
opt.orElseGet(() -> 42);
Optional<Integer> opt = Optional.empty();
opt.orElseGet(() -> 42);
Anonymous Quiz
3%
null
21%
Optional[42]
7%
Исключение
53%
42
17%
Посмотреть ответ
🎉3✍2👍2
Класс LocalDate в Java простыми словами. Часть 1.
Когда дело касается работы с датами в Java, класс LocalDate является незаменимым инструментом. Он предоставляет простой и удобный способ для представления даты без учета временной зоны и времени суток.
Класс LocalDate является частью пакета java.time и был введен в Java 8 для работы с датами без времени. Он представляет собой неизменяемый объект, который содержит год, месяц и день.
LocalDate не учитывает часы, минуты и секунды, что делает его идеальным для работы с календарными датами.
Создание объекта LocalDate.
Для создания объекта LocalDate используется статический метод of().
Например, чтобы представить дату 23 июля 2025 года, мы можем использовать следующий код:
LocalDate date = LocalDate.of(2025, 7, 23);
Операции с датами.
Класс LocalDate обладает множеством методов для выполнения различных операций с датами. Например, мы можем добавлять и вычитать дни, месяцы и годы, а также выполнять сравнение дат.
// Прибавляем 1 день к нашей дате
LocalDate tomorrow = date.plusDays(1);
// Прибавляем 1 месяц к нашей дате
LocalDate nextMonth = date.plusMonths(1);
// Отнимаем 1 год от нашей даты
LocalDate previousYear = date.minusYears(1);
boolean isAfter = date.isAfter(tomorrow);
boolean isBefore = date.isBefore(nextMonth);
boolean isEqual = date.isEqual(previousYear);
Если мы напишем в консоль:
System.out.println(isAfter);
System.out.println(isBefore);
System.out.println(isEqual);
То получим следующий вывод:
false
true
false
✅ JavaStart. Подписаться
Когда дело касается работы с датами в Java, класс LocalDate является незаменимым инструментом. Он предоставляет простой и удобный способ для представления даты без учета временной зоны и времени суток.
Класс LocalDate является частью пакета java.time и был введен в Java 8 для работы с датами без времени. Он представляет собой неизменяемый объект, который содержит год, месяц и день.
LocalDate не учитывает часы, минуты и секунды, что делает его идеальным для работы с календарными датами.
Создание объекта LocalDate.
Для создания объекта LocalDate используется статический метод of().
Например, чтобы представить дату 23 июля 2025 года, мы можем использовать следующий код:
LocalDate date = LocalDate.of(2025, 7, 23);
Операции с датами.
Класс LocalDate обладает множеством методов для выполнения различных операций с датами. Например, мы можем добавлять и вычитать дни, месяцы и годы, а также выполнять сравнение дат.
// Прибавляем 1 день к нашей дате
LocalDate tomorrow = date.plusDays(1);
// Прибавляем 1 месяц к нашей дате
LocalDate nextMonth = date.plusMonths(1);
// Отнимаем 1 год от нашей даты
LocalDate previousYear = date.minusYears(1);
boolean isAfter = date.isAfter(tomorrow);
boolean isBefore = date.isBefore(nextMonth);
boolean isEqual = date.isEqual(previousYear);
Если мы напишем в консоль:
System.out.println(isAfter);
System.out.println(isBefore);
System.out.println(isEqual);
То получим следующий вывод:
false
true
false
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
✍3👍3👨💻2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁5✍3👨💻1
Какая аннотация Spring помечает метод-слушатель событий?
Anonymous Quiz
28%
4%
57%
3%
Посмотреть ответ
✍2👍2🎉2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁4💯4👍1
Знакомство с классом LocalDate в Java. Часть 2.
Форматирование и разбор даты.
Методы format() и parse() позволяют форматировать объект LocalDate в строку и обратно. Например:
// Создаём переменную date
LocalDate date = LocalDate.of(2025, 7, 23);
// Форматируем дату в строку по конкретному паттерну
String formattedDate = date.format(DateTimeFormatter.ofPattern("dd.MM.yyyy"));
// Получаем дату из переданной строки
LocalDate parsedDate = LocalDate.parse(
"23.07.2025",
DateTimeFormatter.ofPattern("dd.MM.yyyy")
);
System.out.println(formattedDate);
System.out.println(parsedDate);
Вывод переменных в консоль:
23.07.2025
2025-07-23
✅ JavaStart. Подписаться
Форматирование и разбор даты.
Методы format() и parse() позволяют форматировать объект LocalDate в строку и обратно. Например:
// Создаём переменную date
LocalDate date = LocalDate.of(2025, 7, 23);
// Форматируем дату в строку по конкретному паттерну
String formattedDate = date.format(DateTimeFormatter.ofPattern("dd.MM.yyyy"));
// Получаем дату из переданной строки
LocalDate parsedDate = LocalDate.parse(
"23.07.2025",
DateTimeFormatter.ofPattern("dd.MM.yyyy")
);
System.out.println(formattedDate);
System.out.println(parsedDate);
Вывод переменных в консоль:
23.07.2025
2025-07-23
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3👨💻3✍2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁5👍3👨💻1
Какой метод Stream API завершит вычисления, как только найден первый элемент, удовлетворяющий условию?
Anonymous Quiz
3%
filter()
78%
findFirst()
16%
anyMatch()
1%
collect()
1%
Посмотреть ответ
👍3✍2🎉2
Что делает аннотация @Slf4j (Lombok)?
Anonymous Quiz
31%
Генерирует статическое поле-логгер и методы logInfo, logError
38%
Генерирует поле логгера выбранного фреймворка (по умолчанию SLF4J)
2%
Добавляет поддержку Structured Logging в JVM
9%
Перехватывает исключения и логирует их автоматически
20%
Посмотреть ответ
✍3👍3🎉1
Знакомство с классом LocalDate в Java. Часть 3.
Пример использования LocalDate на коммерческом проекте.
Допустим, у нас есть задача вычислить дату через два месяца от текущей даты и проверить, выпадает ли она на выходной день:
Введем переменную currentDate, которая будет соответствовать фиксированной дате (20 июля 2025). Введем переменную twoMonthsLater, которая будет соответствовать дате, которая старше нашей на 2 месяца.
Пропишем условие, которое будет проверять, выпадает ли наша новая дата twoMonthsLater на выходной день или нет (Картинка 1).
Чтобы получить конкретный день нашей новой даты, воспользуемся методом класса LocalDate - getDayOfWeek(), а также проверки нужного дня недели воспользуемся энамом DayOfWeek из того же пакета java.time. И сделаем сравнение (Картинка 2).
Вывод в консоль на Картинке 2.
✅ JavaStart. Подписаться
Пример использования LocalDate на коммерческом проекте.
Допустим, у нас есть задача вычислить дату через два месяца от текущей даты и проверить, выпадает ли она на выходной день:
Введем переменную currentDate, которая будет соответствовать фиксированной дате (20 июля 2025). Введем переменную twoMonthsLater, которая будет соответствовать дате, которая старше нашей на 2 месяца.
Пропишем условие, которое будет проверять, выпадает ли наша новая дата twoMonthsLater на выходной день или нет (Картинка 1).
Чтобы получить конкретный день нашей новой даты, воспользуемся методом класса LocalDate - getDayOfWeek(), а также проверки нужного дня недели воспользуемся энамом DayOfWeek из того же пакета java.time. И сделаем сравнение (Картинка 2).
Вывод в консоль на Картинке 2.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3✍2🔥2👨💻1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6💯4✍2❤1
Что произойдёт, если у класса record явно переопределить метод hashCode() и не переопределить equals()?
Anonymous Quiz
57%
Допустимо, но нарушит контракт equals/hashCode, что приведёт к некорректной работе Set/Map
14%
Ошибка компиляции - оба метода должны переопределяться вместе
14%
Javac автоматически сгенерирует совместимый equals()
7%
JVM проигнорирует пользовательский hashCode() и оставит сгенерированный
7%
Посмотреть ответ
✍3👍3🎉1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁5💯3👍1
Какой из Collectors лучше всего подходит для подсчёта количества элементов потока?
Anonymous Quiz
8%
Collectors.toList()
45%
Collectors.counting()
11%
Collectors.summingInt()
23%
Collectors.reducing(0, e -> 1, Integer::sum)
13%
Посмотреть ответ
✍4👍3🎉1
ООП, Инкапсуляция в Java простыми словами. Часть 1.
Инкапсуляция – это одна из четырёх фундаментальных концепций ООП. Названия оставшихся трёх: наследование, полиморфизм, абстракция.
Инкапсуляция в Java является механизмом обёртывания данных (переменных) и кода, работающего с данными (методами), в одно целое. В инкапсуляции переменные класса будут скрыты от других классов и доступ к ним может быть получен только с помощью метода их текущего класса. По-другому это называется скрытием данных.
Для достижения инкапсуляции в Java:
1) Объявите переменные класса как private;
2) Предоставьте public к методам установки и получения (сеттеру и геттеру) для изменения и просмотра значений переменных.
Рассмотрим пример Инкапсуляции на Картинке 1.
У нас есть некий класс EncapsulationClass со своими атрибутами – 3 private поля: name, id и age. А значит напрямую эти поля недоступны из других классов. Но также у нас есть публичные (public) методы, взаимодействующие с этими приватными полями. Следовательно, эти методы доступны в других классах.
Публичные методы setXXX() и getXXX() являются точками доступа переменных экземпляра класса EncapsulationClass. Обычно эти методы упоминаются как геттеры и сеттеры (Getters and Setters).
Следовательно, любой класс, который хочет получить доступ к переменным, должен получить к ним доступ через эти геттеры и сеттеры.
Доступ к переменным класса EncapsulationClass можно получить следующей программой (Картинка 2).
Мы получим следующий результат:
Имя: Олег, возраст: 28.
✅ JavaStart. Подписаться
Инкапсуляция – это одна из четырёх фундаментальных концепций ООП. Названия оставшихся трёх: наследование, полиморфизм, абстракция.
Инкапсуляция в Java является механизмом обёртывания данных (переменных) и кода, работающего с данными (методами), в одно целое. В инкапсуляции переменные класса будут скрыты от других классов и доступ к ним может быть получен только с помощью метода их текущего класса. По-другому это называется скрытием данных.
Для достижения инкапсуляции в Java:
1) Объявите переменные класса как private;
2) Предоставьте public к методам установки и получения (сеттеру и геттеру) для изменения и просмотра значений переменных.
Рассмотрим пример Инкапсуляции на Картинке 1.
У нас есть некий класс EncapsulationClass со своими атрибутами – 3 private поля: name, id и age. А значит напрямую эти поля недоступны из других классов. Но также у нас есть публичные (public) методы, взаимодействующие с этими приватными полями. Следовательно, эти методы доступны в других классах.
Публичные методы setXXX() и getXXX() являются точками доступа переменных экземпляра класса EncapsulationClass. Обычно эти методы упоминаются как геттеры и сеттеры (Getters and Setters).
Следовательно, любой класс, который хочет получить доступ к переменным, должен получить к ним доступ через эти геттеры и сеттеры.
Доступ к переменным класса EncapsulationClass можно получить следующей программой (Картинка 2).
Мы получим следующий результат:
Имя: Олег, возраст: 28.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3✍2👨💻2