Наследование в Java. Часть 3.
Получение доступа к защищенным (protected) элементам и методам.
Если protected (защищен) стоит перед элементами и методами — это указание на то, что к ним можно обратиться из производного класса.
Как видно из примера на Картинке, у нас есть основной класс — Pet — с защищенными name и display. Также есть класс Kitty, который наследуется от класса Pet.
Чтобы обойти эту защиту, мы создали новый объект small класса Kitty и получили необходимый доступ к защищенному полю name и защищенному методу display класса Pet.
Частый вопрос с собеседований.
👉 JavaStart. Подписаться
Получение доступа к защищенным (protected) элементам и методам.
Если protected (защищен) стоит перед элементами и методами — это указание на то, что к ним можно обратиться из производного класса.
Как видно из примера на Картинке, у нас есть основной класс — Pet — с защищенными name и display. Также есть класс Kitty, который наследуется от класса Pet.
Чтобы обойти эту защиту, мы создали новый объект small класса Kitty и получили необходимый доступ к защищенному полю name и защищенному методу display класса Pet.
Частый вопрос с собеседований.
👉 JavaStart. Подписаться
👍6💯2❤1✍1
Интересная статистика с американской конференции по ChatGPT.
По графику видно, как самый известный и посещаемый сайт StackOverflow теряет трафик посещения своей платформы с 2022 года.
Интересно, будет ли снова рост и когда? 🤔
👉 JavaStart. Подписаться
По графику видно, как самый известный и посещаемый сайт StackOverflow теряет трафик посещения своей платформы с 2022 года.
Интересно, будет ли снова рост и когда? 🤔
👉 JavaStart. Подписаться
👍5👨💻4🤓3❤1⚡1
Наследование в 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. Подписаться
В 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. Подписаться
👍6✍3🔥1👨💻1
Какая структура данных лучше всего подходит для быстрого доступа к элементам по ключу?
Anonymous Quiz
12%
ArrayList
4%
LinkedList
8%
HashSet
73%
HashMap
3%
Посмотреть ответ
✍3👍3🎉3😁1
Наследование в Java. Часть 5.
Как запретить наследование в Java?
Запретить создание подкласса можно просто применив ключевое слово final. Если класс отмечен как final, то никакой класс не может унаследовать от него элементы.
В результате мы получим ошибку.
На Картинке класс Pet обозначен как final, поэтому класс Kitty не может получить от него ни поля ни переменные.
👉 JavaStart. Подписаться
Как запретить наследование в Java?
Запретить создание подкласса можно просто применив ключевое слово final. Если класс отмечен как final, то никакой класс не может унаследовать от него элементы.
В результате мы получим ошибку.
На Картинке класс Pet обозначен как final, поэтому класс Kitty не может получить от него ни поля ни переменные.
👉 JavaStart. Подписаться
👍7✍1🤓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. Подписаться
Когда дело касается работы с датами в 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🔥2✍1
Знакомство с классом 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. Подписаться
Форматирование и разбор даты.
Методы 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. Подписаться
👍6✍1🔥1👨💻1
Что такое autoboxing в Java?
Anonymous Quiz
7%
Процесс автоматического создания экземпляров класса
6%
Процесс автоматической сериализации объектов
74%
Автоматическое преобразование между примитивными типами и их обертками
6%
Процесс автоматической десериализации объектов
7%
Посмотреть ответ
👍6✍1🔥1🎉1
Знакомство с классом LocalDate в Java. Часть 3.
Пример использования LocalDate на коммерческом проекте.
Допустим, у нас есть задача вычислить дату через два месяца от текущей даты и проверить, выпадает ли она на выходной день:
Введем переменную currentDate, которая будет соответствовать фиксированной дате (23 июля 2023). Введем переменную twoMonthsLater, которая будет соответствовать дате, которая старше нашей на 2 месяца.
Пропишем условие, которое будет проверять, выпадает ли наша новая дата twoMonthsLater на выходной день или нет (Картинка 1).
Чтобы получить конкретный день нашей новой даты, воспользуемся методом класса LocalDate - getDayOfWeek(), а также проверки нужного дня недели воспользуемся энамом DayOfWeek из того же пакета java.time. И сделаем сравнение (Картинка 2).
Вывод в консоль на Картинке 2.
👉 JavaStart. Подписаться
Пример использования LocalDate на коммерческом проекте.
Допустим, у нас есть задача вычислить дату через два месяца от текущей даты и проверить, выпадает ли она на выходной день:
Введем переменную currentDate, которая будет соответствовать фиксированной дате (23 июля 2023). Введем переменную twoMonthsLater, которая будет соответствовать дате, которая старше нашей на 2 месяца.
Пропишем условие, которое будет проверять, выпадает ли наша новая дата twoMonthsLater на выходной день или нет (Картинка 1).
Чтобы получить конкретный день нашей новой даты, воспользуемся методом класса LocalDate - getDayOfWeek(), а также проверки нужного дня недели воспользуемся энамом DayOfWeek из того же пакета java.time. И сделаем сравнение (Картинка 2).
Вывод в консоль на Картинке 2.
👉 JavaStart. Подписаться
👍7✍2🔥2❤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.
👉 JavaStart. Подписаться
👍10❤3✍2🔥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. Подписаться
Скрытие информации в 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🔥3✍1👨💻1
Что такое статический метод в Java?
Anonymous Quiz
16%
Метод, который может быть вызван только экземпляром класса
4%
Метод, который изменяет статические переменные класса
2%
Метод, который может быть переопределен в дочерних классах
76%
Метод, который может быть вызван без создания экземпляра класса
2%
Посмотреть ответ
👍4✍3🎉2