Дайте определение понятию «интерфейс». Какие модификаторы по умолчанию имеют поля и методы интерфейсов?
Ключевое слово
Начиная с
Интерфейс также может содержать и поля. В этом случае они автоматически являются публичными
Ключевое слово
interface
используется для создания полностью абстрактных классов. Основное предназначение интерфейса - определять каким образом мы можем использовать класс, который его реализует. Создатель интерфейса определяет имена методов, списки аргументов и типы возвращаемых значений, но не реализует их поведение. Все методы неявно объявляются как public
.Начиная с
Java 8
в интерфейсах разрешается размещать реализацию методов по умолчанию default
и статических static
методов.Интерфейс также может содержать и поля. В этом случае они автоматически являются публичными
public
, статическими static
и неизменяемыми final
.👍20🔥3❤1
Освоить один из самых популярных фреймворков на онлайн-курсе «Разработчик на Spring Framework» от OTUS.
Что даст вам курс:
✔️ Понимание, как создавать Web-приложения на микросервисной архитектуре и решать высокоуровневые задачи по разработке
✔️ Умение быстро проходить путь от идеи до production-grade
✔️ Владение фреймворками Spring и технологиями вспомогательных проектов (Spring MVC, Spring Security, Spring Boot, Spring Reactive Stack, Spring 5).
Вы можете заранее бесплатно получить полную программу, чтобы убедиться, что она вам подходит.
🎁 Черная пятница в OTUS! Успейте получить скидку 15% на курс!
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2
Метод insert()
Метод insert() используется для вставки элемента в список в заданную позицию. Он принадлежит интерфейсу List и его реализациям, таким как ArrayList.
Этот метод вставляет указанный элемент element по заданному индексу index и сдвигает все последующие элементы вправо.
*Индексы начинаются с 0.
*Если индекс меньше 0 или больше размера списка, будет выброшено исключение.
Метод insert() используется для вставки элемента в список в заданную позицию. Он принадлежит интерфейсу List и его реализациям, таким как ArrayList.
Этот метод вставляет указанный элемент element по заданному индексу index и сдвигает все последующие элементы вправо.
*Индексы начинаются с 0.
*Если индекс меньше 0 или больше размера списка, будет выброшено исключение.
👍24🔥3😁3
💻Углубленный курс: Apache Kafka для разработчиков
Для тех, кто уже работал с Kafka, и хочет выйти на новый уровень владения инструментом
Что будет на курсе:
✔️Практика на Java и Golang;
✔️Работа с платформой Spring+Docker+Postgres;
✔️Кейсы, основанные на личном опыте разработчиков;
✔️Задачи, максимально приближенные к реальным.
Эксперты курса:
🔸Всеволод Севостьянов, Engineering Manager в HelloFresh;
🔸Алексей Бурылов, Site Reliability в Qiwi.
Стартуем уже 22 ноября!
А специально для тех, кто не успевает приступить, запись будет открыта еще целую неделю. Присоединяйтесь!
Изучить программу курса и оставить заявку на обучение
Для тех, кто уже работал с Kafka, и хочет выйти на новый уровень владения инструментом
Что будет на курсе:
✔️Практика на Java и Golang;
✔️Работа с платформой Spring+Docker+Postgres;
✔️Кейсы, основанные на личном опыте разработчиков;
✔️Задачи, максимально приближенные к реальным.
Эксперты курса:
🔸Всеволод Севостьянов, Engineering Manager в HelloFresh;
🔸Алексей Бурылов, Site Reliability в Qiwi.
Стартуем уже 22 ноября!
А специально для тех, кто не успевает приступить, запись будет открыта еще целую неделю. Присоединяйтесь!
Изучить программу курса и оставить заявку на обучение
👍6😁1
Чем абстрактный класс отличается от интерфейса? В каких случаях следует использовать абстрактный класс, а в каких интерфейс?
• В Java класс может одновременно реализовать несколько интерфейсов, но наследоваться только от одного класса.
• Абстрактные классы используются только тогда, когда присутствует тип отношений «is a» (является). Интерфейсы могут реализоваться классами, которые не связаны друг с другом.
• Абстрактный класс - средство, позволяющее избежать написания повторяющегося кода, инструмент для частичной реализации поведения. Интерфейс - это средство выражения семантики класса, контракт, описывающий возможности. Все методы интерфейса неявно объявляются как public abstract или (начиная с Java 8) default - методами с реализацией по-умолчанию, а поля - public static final.
• Интерфейсы позволяют создавать структуры типов без иерархии.
• Наследуясь от абстрактного, класс «растворяет» собственную индивидуальность. Реализуя интерфейс, он расширяет собственную функциональность.
Абстрактные классы содержат частичную реализацию, которая дополняется или расширяется в подклассах. При этом все подклассы схожи между собой в части реализации, унаследованной от абстрактного класса, и отличаются лишь в части собственной реализации абстрактных методов родителя. Поэтому абстрактные классы применяются в случае построения иерархии однотипных, очень похожих друг на друга классов. В этом случае наследование от абстрактного класса, реализующего поведение объекта по умолчанию может быть полезно, так как позволяет избежать написания повторяющегося кода. Во всех остальных случаях лучше использовать интерфейсы.
• В Java класс может одновременно реализовать несколько интерфейсов, но наследоваться только от одного класса.
• Абстрактные классы используются только тогда, когда присутствует тип отношений «is a» (является). Интерфейсы могут реализоваться классами, которые не связаны друг с другом.
• Абстрактный класс - средство, позволяющее избежать написания повторяющегося кода, инструмент для частичной реализации поведения. Интерфейс - это средство выражения семантики класса, контракт, описывающий возможности. Все методы интерфейса неявно объявляются как public abstract или (начиная с Java 8) default - методами с реализацией по-умолчанию, а поля - public static final.
• Интерфейсы позволяют создавать структуры типов без иерархии.
• Наследуясь от абстрактного, класс «растворяет» собственную индивидуальность. Реализуя интерфейс, он расширяет собственную функциональность.
Абстрактные классы содержат частичную реализацию, которая дополняется или расширяется в подклассах. При этом все подклассы схожи между собой в части реализации, унаследованной от абстрактного класса, и отличаются лишь в части собственной реализации абстрактных методов родителя. Поэтому абстрактные классы применяются в случае построения иерархии однотипных, очень похожих друг на друга классов. В этом случае наследование от абстрактного класса, реализующего поведение объекта по умолчанию может быть полезно, так как позволяет избежать написания повторяющегося кода. Во всех остальных случаях лучше использовать интерфейсы.
👍26🔥7❤4
This media is not supported in your browser
VIEW IN TELEGRAM
О чём расскажут эксперты по разработке и эксплуатации на YaTalks 2023
Делимся некоторыми темами ↓
«Интеграция Delivery Club и Яндекс Еды» — как объединяли приложения и сотрудников разных команд, как укладывались в сроки и какие уроки извлекли из этого опыта.
Никита Илясов, СТО, Яндекс Еда и Маркет Деливери
«Искусство бенчмаркинга и оптимизации распределённых баз данных на примере YDB» — как бенчмарки и оптимизация помогают работать с серверами, на которых лежат петабайты данных.
Евгений Иванов, старший разработчик программного обеспечения, Yandex Infrastructure
«Ускоритель в масштабе планеты: как инженеры управляют временем» — доклад о технологиях, которые увеличили скорость целых городов и стран, и о том, что происходит уже сейчас и ждёт нас в будущем.
Алексей Гусаков, технический директор, Яндекс Поиск
Эти и другие доклады можно послушать 5 декабря. Офлайн — в Москве и Белграде, онлайн — из любой точки мира. Если придёте лично, сможете поучаствовать в нетворкинге, полайвкодить с коллегами и посоветоваться с HR Яндекса, как написать резюме.
Всё бесплатно, регистрируйтесь ↓
Зарегистрироваться
Реклама. ООО "Яндекс". erid:2VtzqxQAFsM
Делимся некоторыми темами ↓
«Интеграция Delivery Club и Яндекс Еды» — как объединяли приложения и сотрудников разных команд, как укладывались в сроки и какие уроки извлекли из этого опыта.
Никита Илясов, СТО, Яндекс Еда и Маркет Деливери
«Искусство бенчмаркинга и оптимизации распределённых баз данных на примере YDB» — как бенчмарки и оптимизация помогают работать с серверами, на которых лежат петабайты данных.
Евгений Иванов, старший разработчик программного обеспечения, Yandex Infrastructure
«Ускоритель в масштабе планеты: как инженеры управляют временем» — доклад о технологиях, которые увеличили скорость целых городов и стран, и о том, что происходит уже сейчас и ждёт нас в будущем.
Алексей Гусаков, технический директор, Яндекс Поиск
Эти и другие доклады можно послушать 5 декабря. Офлайн — в Москве и Белграде, онлайн — из любой точки мира. Если придёте лично, сможете поучаствовать в нетворкинге, полайвкодить с коллегами и посоветоваться с HR Яндекса, как написать резюме.
Всё бесплатно, регистрируйтесь ↓
Зарегистрироваться
Реклама. ООО "Яндекс". erid:2VtzqxQAFsM
👍7🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Алгоритм Дейкстры на Java
👍10
This media is not supported in your browser
VIEW IN TELEGRAM
Искусственный интеллект создаст коллегу мечты💚
Визуализировать идеальный образ сокомандника поможет нейросеть Kandinsky 2.2. Нужно лишь выбрать профессиональное направление и его навыки. Получившийся результат можно пошерить друзьям.
В реальности крутые коллеги уже ждут вас в Сбере — вместе с масштабными проектами и прогрессивными технологиями. Скорее залетайте на rabota.sber.ru и оставляйте свой отклик!
Визуализировать идеальный образ сокомандника поможет нейросеть Kandinsky 2.2. Нужно лишь выбрать профессиональное направление и его навыки. Получившийся результат можно пошерить друзьям.
В реальности крутые коллеги уже ждут вас в Сбере — вместе с масштабными проектами и прогрессивными технологиями. Скорее залетайте на rabota.sber.ru и оставляйте свой отклик!
👍12❤2🔥1
Почему нельзя объявить метод интерфейса с модификатором final?
В случае интерфейсов указание модификатора
В случае интерфейсов указание модификатора
final
бессмысленно, т.к. все методы интерфейсов неявно объявляются как абстрактные, т.е. их невозможно выполнить, не реализовав где-то еще, а этого нельзя будет сделать, если у метода идентификатор final
.👍17🔥3
🔥Путь в Java-разработке с нуля и до Middle за 15 месяцев
Уже 29 декабря стартует новая группа специализации «Java Developer» в OTUS.
💪 С нуля до Middle за 15 месяцев!
На онлайн-курсе вы получите:
✔️ Уникальные знания от преподавателей — Senior Java-разработчиков ведущих IT-компаний.
✔️ Практику создания реальных проектов — разработка своего серверного приложения на Java
✔️ Актуальные навыки, необходимые для трудоустройства Middle Java-разработчиком
✔️ Вы освоите инструменты: IntelliJ IDEA, Java Development Kit (JDK), Spring Framework, Hibernate, PostgreSQL, Apache Maven, Gradle, Docker, Kubernetes, Apache Kafka, RabbitMQ, JUnit, Postman, Jira.
👉 Получить специальные условия на курс можно оставив заявку по ссылке: https://otus.pw/owB2/
Уже 29 декабря стартует новая группа специализации «Java Developer» в OTUS.
На онлайн-курсе вы получите:
✔️ Уникальные знания от преподавателей — Senior Java-разработчиков ведущих IT-компаний.
✔️ Практику создания реальных проектов — разработка своего серверного приложения на Java
✔️ Актуальные навыки, необходимые для трудоустройства Middle Java-разработчиком
✔️ Вы освоите инструменты: IntelliJ IDEA, Java Development Kit (JDK), Spring Framework, Hibernate, PostgreSQL, Apache Maven, Gradle, Docker, Kubernetes, Apache Kafka, RabbitMQ, JUnit, Postman, Jira.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8😁4🔥2❤1
Зачем нужны и какие бывают блоки инициализации?
Блоки инициализации представляют собой код, заключенный в фигурные скобки и размещаемый внутри класса вне объявления методов или конструкторов.
• Существуют статические и нестатические блоки инициализации.
• Блок инициализации выполняется перед инициализацией класса загрузчиком классов или созданием объекта класса с помощью конструктора.
• Несколько блоков инициализации выполняются в порядке следования в коде класса.
• Блок инициализации способен генерировать исключения, если их объявления перечислены в
• Блок инициализации возможно создать и в анонимном классе.
Блоки инициализации представляют собой код, заключенный в фигурные скобки и размещаемый внутри класса вне объявления методов или конструкторов.
• Существуют статические и нестатические блоки инициализации.
• Блок инициализации выполняется перед инициализацией класса загрузчиком классов или созданием объекта класса с помощью конструктора.
• Несколько блоков инициализации выполняются в порядке следования в коде класса.
• Блок инициализации способен генерировать исключения, если их объявления перечислены в
throws
всех конструкторов класса.• Блок инициализации возможно создать и в анонимном классе.
👍20🔥7❤1
Forwarded from Java News
Java-инспекции в IDEA 2023.2
Это ретроспективный пост про Java-инспекции IntelliJ IDEA 2023.2, в преддверии 2023.3 (которая сейчас в состоянии Beta 2). Несмотря на то, что эта версия вышла еще в июле, не все в точности помнят, что же там произошло, и какую версию они вообще используют.
А между тем, там не всё хорошо. Например, баги с тэгом @snippet до сих пор не поправили.
Чтобы самому воспроизвести новости из ченжлога - нужно набирать много кода и проверять их. Это лень, это мы не делаем. Вместо этого, мы смотрим этот короткий пост с PNG-картинками, показывающими основные фишки.
Читать статью
Это ретроспективный пост про Java-инспекции IntelliJ IDEA 2023.2, в преддверии 2023.3 (которая сейчас в состоянии Beta 2). Несмотря на то, что эта версия вышла еще в июле, не все в точности помнят, что же там произошло, и какую версию они вообще используют.
А между тем, там не всё хорошо. Например, баги с тэгом @snippet до сих пор не поправили.
Чтобы самому воспроизвести новости из ченжлога - нужно набирать много кода и проверять их. Это лень, это мы не делаем. Вместо этого, мы смотрим этот короткий пост с PNG-картинками, показывающими основные фишки.
Читать статью
Teletype
Java-инспекции в IDEA 2023.2
Это ретроспективный пост про Java-инспекции IntelliJ IDEA 2023.2, в преддверии 2023.3 (которая сейчас в состоянии Beta 2). Несмотря...
👍10🔥3
🔎Хотите узнать об особенных возможностях Scala?
Расскажем на бесплатном открытом уроке «Механизм implicits в Scala» от OTUS и Алексея Воронца – руководителя разработки в NAUMEN.
☕На вебинаре:
— Познакомимся с историей возникновения и мотивацией компонентов механизма.
— Разберем возможности и опасности implicit-преобразований.
— Узнаем, как и для чего служат implicit-параметры.
— Рассмотрим правила и требования, по которым Scala ищет подходящего implicit-кандидата.
📢 Занятие пройдёт 30 ноября в 20:00 мск и будет приурочено к старту курса «Scala-разработчик». После урока вы сможете продолжить обучение на специальных условиях.
👉 Для бесплатного участия и получения записи, регистрируйтесь прямо сейчас: регистрация
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
Расскажем на бесплатном открытом уроке «Механизм implicits в Scala» от OTUS и Алексея Воронца – руководителя разработки в NAUMEN.
☕На вебинаре:
— Познакомимся с историей возникновения и мотивацией компонентов механизма.
— Разберем возможности и опасности implicit-преобразований.
— Узнаем, как и для чего служат implicit-параметры.
— Рассмотрим правила и требования, по которым Scala ищет подходящего implicit-кандидата.
📢 Занятие пройдёт 30 ноября в 20:00 мск и будет приурочено к старту курса «Scala-разработчик». После урока вы сможете продолжить обучение на специальных условиях.
👉 Для бесплатного участия и получения записи, регистрируйтесь прямо сейчас: регистрация
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
👍4🔥2🎅1
Представить себе информационную систему, в которой все пользователи имеют одинаковые неограниченные права практически невозможно - в абсолютном большинстве информационных систем пользователи обладают разными правами, в зависимости от выполняемых задач. Авторизация обеспечивает предоставление полномочий пользователям, а так же проверку их наличия у пользователя при необходимости. В этом ролике автор постарался рассказать, что такое авторизация, какие основные способы её реализации существуют, а так же рассмотрел применение Spring Security для обеспечения авторизованного доступа к HTTP-эндпоинтам и методам.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Авторизация - Spring Security в деталях #java #spring #springsecurity #abac #rbac #authorization
Представить себе информационную систему, в которой все пользователи имеют одинаковые неограниченные права практически невозможно - в абсолютном большинстве информационных систем пользователи обладают разными правами, в зависимости от выполняемых задач. Авторизация…
👍19🔥8
❓Как разработчику повысить свою ценность в команде?
Расскажем на бесплатном открытом уроке «Механизм implicits в Scala» от OTUS и Алексея Воронца – руководителя разработки в NAUMEN.
✅ На вебинаре:
— Познакомимся с историей возникновения и мотивацией компонентов механизма.
— Разберем возможности и опасности implicit-преобразований.
— Узнаем, как и для чего служат implicit-параметры.
— Рассмотрим правила и требования, по которым Scala ищет подходящего implicit-кандидата.
Занятие пройдёт 30 ноября в 20:00 мск и будет приурочено к старту курса «Scala-разработчик». После урока вы сможете продолжить обучение на специальных условиях.
👉 Для бесплатного участия и получения записи регистрируйтесь прямо сейчас: https://otus.pw/qHjal/
Расскажем на бесплатном открытом уроке «Механизм implicits в Scala» от OTUS и Алексея Воронца – руководителя разработки в NAUMEN.
✅ На вебинаре:
— Познакомимся с историей возникновения и мотивацией компонентов механизма.
— Разберем возможности и опасности implicit-преобразований.
— Узнаем, как и для чего служат implicit-параметры.
— Рассмотрим правила и требования, по которым Scala ищет подходящего implicit-кандидата.
Занятие пройдёт 30 ноября в 20:00 мск и будет приурочено к старту курса «Scala-разработчик». После урока вы сможете продолжить обучение на специальных условиях.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3🔥2
System.arraycopy
System.arraycopy используется для копирования элементов из одного массива в другой. Этот метод предоставляет эффективный способ копирования данных между массивами. Синтаксис System.arraycopy:
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
Параметры метода включают:
src: Исходный массив, из которого вы хотите скопировать элементы.
srcPos: Начальная позиция в исходном массиве, с которой начнется копирование.
dest: Целевой массив, в который вы хотите скопировать элементы.
destPos: Начальная позиция в целевом массиве, куда будут скопированы элементы.
length: Количество элементов, которое вы хотите скопировать.
System.arraycopy используется для копирования элементов из одного массива в другой. Этот метод предоставляет эффективный способ копирования данных между массивами. Синтаксис System.arraycopy:
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
Параметры метода включают:
src: Исходный массив, из которого вы хотите скопировать элементы.
srcPos: Начальная позиция в исходном массиве, с которой начнется копирование.
dest: Целевой массив, в который вы хотите скопировать элементы.
destPos: Начальная позиция в целевом массиве, куда будут скопированы элементы.
length: Количество элементов, которое вы хотите скопировать.
👍24🔥4
HashMap — это структура данных, представляет собой хэш-таблицу.
На вебинаре мы:
- познакомимся с коллекцией HashMap;
- рассмотрим основные методы;
- узнаем, как она ведет себя под капотом.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥2❤1
Разберемся на бесплатном открытом уроке «Тактики работы с масштабируемостью» от OTUS.
✅ На вебинаре:
— изучим тактики и их преимущества и недостатки в различных сценариях;
— рассмотрим горизонтальное и вертикальное масштабирование, децентрализованный подход, автоматическое масштабирование и многопоточность;
— разберём принципы разделения функций и микросервисной архитектуры.
Занятие пройдёт 5 декабря в 20:00 мск и будет приурочено к старту курса «Software Architect». Курс возможно приобрести в рассрочку.
👉 Для бесплатного участия пройдите короткое тестирование прямо сейчас 👈
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2
При работе с контекстом безопасности Spring Security иногда возникают ситуации, когда разрабатываемое приложение начинает себя вести не очевидно, отвечать ошибками с HTTP-статусом 403, но без каких-либо подробностей, в том числе и в логах. И в этом случае приходится браться за отладку, о простых способах которой автор расскажет в этом ролике.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Отладка контекста безопасности - Spring Security в деталях
При работе с контекстом безопасности Spring Security иногда возникают ситуации, когда разрабатываемое приложение начинает себя вести не очевидно, отвечать ошибками с HTTP-статусом 403, но без каких-либо подробностей, в том числе и в логах. И в этом случае…
❤8👍5🔥2🎉1