JavaStart
908 subscribers
907 photos
28 videos
618 links
Учи Java вместе с нами!
Наша платформа с курсом - https://javastart.tech
Ютуб с обучающими видео - https://www.youtube.com/@javastart_tech
Download Telegram
Наследование в Java. Часть 3.

Получение доступа к защищенным (protected) элементам и методам.

Если protected (защищен) стоит перед элементами и методами — это указание на то, что к ним можно обратиться из производного класса.

Как видно из примера на Картинке, у нас есть основной класс — Pet — с защищенными name и display. Также есть класс Kitty, который наследуется от класса Pet.
Чтобы обойти эту защиту, мы создали новый объект small класса Kitty и получили необходимый доступ к защищенному полю name и защищенному методу display класса Pet.

Частый вопрос с собеседований.

👉 JavaStart. Подписаться
👍6💯211
Интересная статистика с американской конференции по ChatGPT.

По графику видно, как самый известный и посещаемый сайт StackOverflow теряет трафик посещения своей платформы с 2022 года.

Интересно, будет ли снова рост и когда? 🤔

👉 JavaStart. Подписаться
👍5👨‍💻4🤓311
Наследование в Java. Часть 4.

В Java наследовать можно всего один класс, иными словами - в Java нет многократного наследования, оно возможно только от одного суперкласса.

ОШИБКА:

public class X extends Pet, Сow, Cat {
}

Наследуется все, кроме приватных переменных и методов.

В Java модификатор private сообщает о том, что классы-наследники не получат от родителя элементы с таким обозначением. Если вы попробуете произвести extends, компилятор выдаст ошибку.

Как переделать метод класса-родителя?

Override (переопределение) - мощный инструмент, который применяется, когда необходимо изменить или переопределить реализацию метода, полученного от суперкласса.

class Cow extends Pet{
@Override
public void  walk (){
System.out.println  ("I will run");
}

Важные моменты при использовании @Override:

– Переопределить можно только унаследованные методы;

– Название и параметры метода в родителе и наследнике – одинаковые;

– Методы с обозначением private не переопределяются.

👉 JavaStart. Подписаться
👍63🔥1👨‍💻1
Какая структура данных лучше всего подходит для быстрого доступа к элементам по ключу?
Anonymous Quiz
12%
ArrayList
4%
LinkedList
8%
HashSet
73%
HashMap
3%
Посмотреть ответ
3👍3🎉3😁1
😁1131
Наследование в Java. Часть 5.

Как запретить наследование в Java?

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

В результате мы получим ошибку.

На Картинке класс Pet обозначен как final, поэтому класс Kitty не может получить от него ни поля ни переменные.

👉 JavaStart. Подписаться
👍71🤓1👨‍💻1
Знакомство с классом LocalDate в Java. Часть 1.

Когда дело касается работы с датами в Java, класс LocalDate является незаменимым инструментом. Он предоставляет простой и удобный способ для представления даты без учета временной зоны и времени суток.

Класс LocalDate является частью пакета java.time и был введен в Java 8 для работы с датами без времени. Он представляет собой неизменяемый объект, который содержит год, месяц и день.

LocalDate не учитывает часы, минуты и секунды, что делает его идеальным для работы с календарными датами.

Создание объекта LocalDate.

Для создания объекта LocalDate используется статический метод of().

Например, чтобы представить дату 23 июля 2023 года, мы можем использовать следующий код:

LocalDate date = LocalDate.of(2023, 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. Подписаться
👍8🔥21
Знакомство с классом LocalDate в Java. Часть 2.

Форматирование и разбор даты.

Методы format() и parse() позволяют форматировать объект LocalDate в строку и обратно. Например:

// Создаём переменную date
LocalDate date = LocalDate.of(2023, 7, 23);

// Форматируем дату в строку по конкретному паттерну
String formattedDate = date.format(DateTimeFormatter.ofPattern("dd.MM.yyyy"));

// Получаем дату из переданной строки
LocalDate parsedDate = LocalDate.parse(
"23.07.2023",
DateTimeFormatter.ofPattern("dd.MM.yyyy")
);

System.out.println(formattedDate);
System.out.println(parsedDate);

Вывод переменных в консоль:

23.07.2023
2023-07-23

👉 JavaStart. Подписаться
👍61🔥1👨‍💻1
😁8👍2🔥2💯2
Знакомство с классом LocalDate в Java. Часть 3.

Пример использования LocalDate на коммерческом проекте.

Допустим, у нас есть задача вычислить дату через два месяца от текущей даты и проверить, выпадает ли она на выходной день:

Введем переменную currentDate, которая будет соответствовать фиксированной дате (23 июля 2023). Введем переменную twoMonthsLater, которая будет соответствовать дате, которая старше нашей на 2 месяца.

Пропишем условие, которое будет проверять, выпадает ли наша новая дата twoMonthsLater на выходной день или нет (Картинка 1).

Чтобы получить конкретный день нашей новой даты, воспользуемся методом класса LocalDate - getDayOfWeek(), а также проверки нужного дня недели воспользуемся энамом DayOfWeek из того же пакета java.time. И сделаем сравнение (Картинка 2).

Вывод в консоль на Картинке 2.

👉 JavaStart. Подписаться
👍72🔥21
ООП, Инкапсуляция в 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. Подписаться
👍1032🔥2
ООП, Инкапсуляция в Java. Часть 2.

Скрытие информации в Java. Модификаторы доступа.

Как мы уже рассмотрели ранее, мы используем концепцию инкапсуляции для реализации механизма сокрытия информации.

Этот подход, как и абстракция, один из наиболее часто используемых механизмов в Java. Механизм сокрытия делает атрибуты класса недоступными извне и защищенными от нежелательных/случайных действий.

Говоря об этой концепции, не лишним будет разобрать инструменты для обозначения доступности элементов – модификаторы доступа. Java поддерживает четыре модификатора доступа, используемые для определения видимости классов, методов и атрибутов. Каждый из них указывает уровень доступности, и мы можем использовать только один для каждого класса, метода или атрибута.

Перечислим их, начиная с наиболее ограничивающих:

1) private;
2) no modifier (package);
3) protected;
4) public.

Теперь подробнее:

1) Модификатор private.

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

2) Модификатор no modifier (package).

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

3) Модификатор protected.

Атрибуты и методы с модификатором доступа protected могут быть доступны внутри вашего класса, всеми классами в одном пакете, а также всеми наследниками в любых пакетах. Этот модификатор, как правило, используется для внутренних методов, которые должны вызываться или переопределяться классами наследниками.

4) Модификатор public.

Доступ к методам и атрибутам, использующим модификатор public, можно получить как в текущем классе, так и во всех других классах.

👉 JavaStart. Подписаться
👍5🔥31👨‍💻1