Основные принципы ООП в Java: наследование, инкапсуляция, полиморфизм, абстракция.
Суть наследования состоит в том, что один объект может наследовать свойства другого объекта, а также иметь свои собственные.
Полиморфизм заключается в том, что один и тот же метод может работать по-разному в зависимости от объекта, где он вызван, и данных, которые ему передали.
Инкапсуляция же подразумевает, что вся информация, которая нужна для работы конкретного объекта, должна храниться внутри этого объекта. Для внешних объектов доступны только публичные атрибуты и методы.
Не так давно начали выделять Абстракцию — это выделение общих характеристик объектов, их свойств и методов, при игнорировании деталей реализации.
👉 JavaStart. Подписаться
Суть наследования состоит в том, что один объект может наследовать свойства другого объекта, а также иметь свои собственные.
Полиморфизм заключается в том, что один и тот же метод может работать по-разному в зависимости от объекта, где он вызван, и данных, которые ему передали.
Инкапсуляция же подразумевает, что вся информация, которая нужна для работы конкретного объекта, должна храниться внутри этого объекта. Для внешних объектов доступны только публичные атрибуты и методы.
Не так давно начали выделять Абстракцию — это выделение общих характеристик объектов, их свойств и методов, при игнорировании деталей реализации.
👉 JavaStart. Подписаться
👍9✍1👨💻1
Наследование в Java. Часть 1.
Наследование в Java — механизм, который позволяет одному классу получить все элементы и свойства другого класса. Этот процесс также называют расширением, преобразованием или отношением «родитель-потомок».
Основные обозначения:
Суперкласс (родитель) — основной класс, от которого принимаются все элементы.
Подкласс (расширенный, дочерний) — класс, который преобразовывается от другого класса, при этом может иметь свои элементы.
Зачем применяют наследование в Java?
Суть в том, что можно образовать новые классы, используя уже имеющийся код. При этом есть возможность добавить другие переменные в дочерний класс, получив при этом новый.
Синтаксис на Картинке.
Ключевое слово extends означает, что создается новый класс от уже имеющегося. Новый класс наследует имеющийся.
Из примера видно, что класс Apple создается из Fruit, при этом наследуются все его элементы. Так, Fruit — это класс-родитель, а Apple — класс-потомок.
👉 JavaStart. Подписаться
Наследование в Java — механизм, который позволяет одному классу получить все элементы и свойства другого класса. Этот процесс также называют расширением, преобразованием или отношением «родитель-потомок».
Основные обозначения:
Суперкласс (родитель) — основной класс, от которого принимаются все элементы.
Подкласс (расширенный, дочерний) — класс, который преобразовывается от другого класса, при этом может иметь свои элементы.
Зачем применяют наследование в Java?
Суть в том, что можно образовать новые классы, используя уже имеющийся код. При этом есть возможность добавить другие переменные в дочерний класс, получив при этом новый.
Синтаксис на Картинке.
Ключевое слово extends означает, что создается новый класс от уже имеющегося. Новый класс наследует имеющийся.
Из примера видно, что класс Apple создается из Fruit, при этом наследуются все его элементы. Так, Fruit — это класс-родитель, а Apple — класс-потомок.
👉 JavaStart. Подписаться
👍6✍4👨💻2❤1
Наследование в Java. Часть 2.
Правила наследования. Обращение к методу родителя с помощью ключевого слова super.
Чтобы обратиться к методу родителя, нужно использовать ключевое слово super.
Давайте посмотрим на пример на Картинке. У нас есть класс Pet c public методом walk, который ничего не возвращает (void), но при этом выводит в консоль "I will walk".
Наследуемся от класса Pet классом Cow (корова). У коровы есть свой метод void moo(), который просто выводит в консоль “I will moo”.
Теперь создадим метод cowWalk(), а в нем вызовем уже существующий метод в классе Pet – void walk(), который выводит “I will walk”. Вызываем этот метод мы через ключевое слово super.
Таким образом класс наследник можно дополнять своими методами, а также иметь уже готовые методы от класса родителя.
👉 JavaStart. Подписаться
Правила наследования. Обращение к методу родителя с помощью ключевого слова super.
Чтобы обратиться к методу родителя, нужно использовать ключевое слово super.
Давайте посмотрим на пример на Картинке. У нас есть класс Pet c public методом walk, который ничего не возвращает (void), но при этом выводит в консоль "I will walk".
Наследуемся от класса Pet классом Cow (корова). У коровы есть свой метод void moo(), который просто выводит в консоль “I will moo”.
Теперь создадим метод cowWalk(), а в нем вызовем уже существующий метод в классе Pet – void walk(), который выводит “I will walk”. Вызываем этот метод мы через ключевое слово super.
Таким образом класс наследник можно дополнять своими методами, а также иметь уже готовые методы от класса родителя.
👉 JavaStart. Подписаться
👍8✍2🔥1👨💻1
Какая команда Git позволяет объединить две ветки?
Anonymous Quiz
3%
git commit
10%
git branch
79%
git merge
6%
git add
1%
Посмотреть ответ
👏4✍1🔥1🎉1
Наследование в 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