Java интерфейсы / Java для начинающих / Уроки Java

  Рет қаралды 28,185

Лёша Маршал

Лёша Маршал

Күн бұрын

Java интерфейсы может показаться лёгкой темой. Но это не так. Сам этот механизм довольно интересный и имеет "глубокий смысл".
Очень важно научиться пользоваться этим в программировании на java.
#java #javaуроки #javaMarshal
Все уроки • Уроки Java для начинаю...
java для начинающих это плэйлист в котором я стараюсь максимально просто объяснить темы программирования на java, иногда из-за этого может быть не раскрыта часть важных нюансов, которые сложно понять на начальном уровне.
В любом случае уроки это ваш старт на пути становления программистом и многое в ващем обучение будет зависеть от вас самих.
Механизм наследования очень удобен, но он имеет свои ограничения. В частности мы можем наследовать только от одного класса, в отличие, например, от языка С++, где имеется множественное наследование.
В языке Java подобную проблему частично позволяют решить интерфейсы. Интерфейсы определяют некоторый функционал, не имеющий конкретной реализации, который затем реализуют классы, применяющие эти интерфейсы. И один класс может применить множество интерфейсов.
Все методы интерфейса не имеют модификаторов доступа, но фактически по умолчанию доступ public, так как цель интерфейса - определение функционала для реализации его классом. Поэтому весь функционал должен быть открыт для реализации.
Одним из преимуществ использования интерфейсов является то, что они позволяют добавить в приложение гибкости.
По умолчанию все методы в интерфейсе фактически имеют модификатор public. Однако начиная с Java 9 мы также можем определять в интерфейсе методы с модификатором private. Они могут быть статическими и нестатическими, но они не могут иметь реализации по умолчанию.
Если нам надо применить в классе несколько интерфейсов, то они все перечисляются через запятую после слова implements
Вложенные интерфейсы
Как и классы, интерфейсы могут быть вложенными, то есть могут быть определены в классах или других интерфейсах.
И также как и в случае с классами, интерфейсы могут использоваться в качестве типа параметров метода или в качестве возвращаемого типа.
Ключевое слово interface используется для создания полностью абстрактных классов. Создатель интерфейса определяет имена методов, списки аргументов и типы возвращаемых значений, но не тела методов.
Наличие слова interface означает, что именно так должны выглядеть все классы, которые реализуют данный интерфейс. Таким образом, любой код, использующий конкретный интерфейс, знает только то, какие методы вызываются для этого интерфейса, но не более того.
Чтобы создать интерфейс, используйте ключевое слово interface вместо class. Как и в случае с классами, вы можете добавить перед словом interface спецификатор доступа public (но только если интерфейс определен в файле, имеющем то же имя) или оставить для него дружественный доступ, если он будет использоваться только в пределах своего пакета. Интерфейс может содержать поля, но они автоматически являются статическими (static) и неизменными (final). Все методы и переменные неявно объявляются как public.
Класс, который собирается использовать определённый интерфейс, использует ключевое слово implements. Оно указывает, что интерфейс лишь определяет форму, а вам нужно наполнить кодом. Методы, которые реализуют интерфейс, должны быть объявлены как public.
Интерфейсов у класса может быть несколько, тогда они перечисляются за ключевым словом implements и разделяются запятыми.
Интерфейсы могут вкладываться в классы и в другие интерфейсы.
Если класс содержит интерфейс, но не полностью реализует определённые им методы, он должен быть объявлен как abstract.

Пікірлер: 72
@AndreTrudeau-o9d
@AndreTrudeau-o9d Ай бұрын
А какие методы лучше использовать для создания интерфейсов в программировании? Лично я выбирал курсы по IT для улучшения своих навыков, рассматривал разные компании, но остановился на Skypro. Благодаря наставнику нашел первого заказчика))
@reexoolreex5511
@reexoolreex5511 2 жыл бұрын
На самом деле автор очень доходчиво донес смысл концепции интерфейсов. До этого ролика дня два смотрел разные видео и читал много статей по теме, пытаясь понять что это и зачем это нужно? Это видео дало понимание. При всем уважении к видеокурсу Алишева, например, он не объяснил тему интерфейсов так понятно, как автор этого видео . Огромное спасибо!
@Isaevmajid
@Isaevmajid 2 ай бұрын
Ровно тоже самое. Прочёл на 4х сайтах и два ролика посмотрел до этого, а в итоге только тут разобрался для чего это нужно.
@АлександрЯкиманский-щ9з
@АлександрЯкиманский-щ9з 2 жыл бұрын
Душераздерающая история про то, как мальчик не умеет читать, а всё что умеет - это запускать игру ногой...
@sazonikv5086
@sazonikv5086 3 ай бұрын
Я плакал на этом месте😢
@relaxshinehouse
@relaxshinehouse 2 жыл бұрын
Я безумно рад, что нашел твой канал. Ты рассказываешь разжевывая, спасибо!
@ДимитрийШафиров
@ДимитрийШафиров Жыл бұрын
Ты супер)) начинаю с нуля и все понимаю, раньше ничем таким не увлекался. Уметь доносить информацию не всем дано
@sdors4
@sdors4 2 жыл бұрын
Ничего не понял но очень интересно :D
@LOREM383
@LOREM383 10 ай бұрын
хахахахха тоже самое
@dmitrypushkaryov2857
@dmitrypushkaryov2857 2 жыл бұрын
До этого все уроки заходили на ура. А тут осталось смутное чувство недопонимания.
@alexanderwagner8199
@alexanderwagner8199 3 жыл бұрын
Вот, вроде, все понятно, но есть ощущение, будто что-то не понял.. Хотя, у меня вообще с ООП такая ситуация.. В любом случае спасибо за уроки)
@No..Name.
@No..Name. Жыл бұрын
Очень хорошо объяснил, спасибо большое за материал. Звук отличный. Побольше видео про java бы, особенно про spring
@sazonikv5086
@sazonikv5086 3 ай бұрын
Урок понравился мне этот🎉
@turbach12568
@turbach12568 Жыл бұрын
Мне кажется ну не закончил урок , ещё немного не договорил, надо было показать как это работает,.А вообщем супер приятно смотреть уроки))и более менее все понятно😊
@mysterybox4893
@mysterybox4893 3 жыл бұрын
только после твоего видоса понял что такое интерфейсы До ээтого посомтрел 7-8 уроков, но твой лучший
@Тёма-г2ш
@Тёма-г2ш 6 ай бұрын
Благодаря безграмотному мальчику, включающему игры ногой, я понял что такое интерфейсы. Спасибо!!!
@БортОдин
@БортОдин 3 жыл бұрын
спасибо за урок, приятный, вдумчивый голос
@leshamarshal
@leshamarshal 3 жыл бұрын
Спасибо !
@konstantinp440
@konstantinp440 3 жыл бұрын
Да, интересно было с этой стороны посмотреть на интерфейсы
@АндрейТест-э1н
@АндрейТест-э1н 2 жыл бұрын
Спасибо за видео. Очень доходчиво
@Дрюха-ш7б
@Дрюха-ш7б 11 ай бұрын
Спасибо
@HieromonkRazov
@HieromonkRazov Жыл бұрын
спасибо за "..поправим масштаб текста.."))
@sergeyzhilin9529
@sergeyzhilin9529 3 жыл бұрын
Зря в конце не запустил весь код. Сам кое-как дописал но не факт что правильно вызываю: Boy ivan = new Boy(); Game game = new Game(); School school = new School(); game.start(ivan); school.start(ivan);
@qetosf
@qetosf Жыл бұрын
В Яндекс практикум не поняла, а тут поняла, спасибо!
@МихаилДолгашев-п5м
@МихаилДолгашев-п5м 2 жыл бұрын
Спасибо за видео. Очень понятно и просто изложено.
@metasta3a
@metasta3a Жыл бұрын
Смысл понятен, но оч загрузил))
@ЛюдмилаШестакова-т8д
@ЛюдмилаШестакова-т8д 17 күн бұрын
Интерфейс - это разный метод передачи действий, которые сам же и создал.
@simonpetryk2541
@simonpetryk2541 Жыл бұрын
Классное видео, спасибо, зашло, подписался+лайк
@ИванИванов-л1э6ы
@ИванИванов-л1э6ы 2 жыл бұрын
Спасибо за труд.
@dervil
@dervil 3 жыл бұрын
Очень хорошо, ждем продолжения ; )
@ilyasamilyak6517
@ilyasamilyak6517 2 жыл бұрын
Очень круто, спасибо
@amirabdulatipoff157
@amirabdulatipoff157 3 жыл бұрын
Автору: просмотри ролик и признайся честно, ты сам понял сказанное/показанное?
@leshamarshal
@leshamarshal 3 жыл бұрын
Я так понимаю, не зашло ?))
@amirabdulatipoff157
@amirabdulatipoff157 3 жыл бұрын
@@leshamarshal , не вопрос вкуса "нравится/не нравится", подача хорошая, но тема не раскрыта до степени понимания. Т.е. декларация есть, а описание не полное
@leshamarshal
@leshamarshal 3 жыл бұрын
Хм...я учту. Но тут конечно проблема. Тема то по сути очень простая. Может я перестарался и стало непонятно по итогу )))
@shepardmoore8048
@shepardmoore8048 3 жыл бұрын
@@leshamarshal да норм, на самом деле. Я понял.
@KoshkaRus55
@KoshkaRus55 3 жыл бұрын
@@leshamarshal все в принципе понятно, но по итогу я не поняла как это работает. т.е. после того как я создала все что было в уроке и нажала Run, то как бы ничего не получилось, хотелось бы увидеть продолжение этого урока, чтобы все работало
@БакирБазаркулуулу-ц8и
@БакирБазаркулуулу-ц8и 2 жыл бұрын
спасибо я учус самоучка. И ваши видео уроки очень помогает. Хочу стать програмистом план ровно через год приехать в Москву и устроиться програмистом.
@Частныйсектор-х4я
@Частныйсектор-х4я 2 жыл бұрын
хорош в Москву ехать! Ваши предки в 1991м выгнали всех русских "чемодан вокзал Россия", а теперь сами едете)) Едь в Нью-орк, Париж, Берлин и тд
@dimakovpak5230
@dimakovpak5230 Жыл бұрын
@@Частныйсектор-х4я хера себе ))) что за ненависть такая , в 90 -х все всех выгоняли ))))
@user-od9ef9ke1l
@user-od9ef9ke1l Жыл бұрын
Ну и как уже подзабил хуек или еще учишься?
@Частныйсектор-х4я
@Частныйсектор-х4я Жыл бұрын
​@@dimakovpak5230 я просто помню как моих друзей и не только их выгнали из Узбекистана, а потом сами поехали в Россию. Они говорили что мы им мешаем, ну вот, не мешаем, так они теперь к нам едут.
@dan4ikBi6
@dan4ikBi6 Жыл бұрын
@@Частныйсектор-х4я а щас ваши понаехали к нам) вот она, карма ахахаха
@sazonikv5086
@sazonikv5086 3 ай бұрын
Всем привет еще раз зашел сказать сапсибо
@pavelh.4543
@pavelh.4543 Жыл бұрын
Нипонял. Если серьезно - не совсем понял до конца прошлый урок, этот аналогично.. стоит ли переходить к следующим урокам? или пересматривать эти 2 пока не дойдет?
@ms.Mysh1
@ms.Mysh1 2 жыл бұрын
спасибо!
@VitaliyPerezhogin
@VitaliyPerezhogin Жыл бұрын
Добрый день! Есть вопрос. А почему нельзя пользоваться так же классами. То есть вызывать методы из классов Player и School. Почему именно интерфейс нужно использовать?
@viktorkrechikov7293
@viktorkrechikov7293 2 жыл бұрын
thanks!!
@VLAD-pi6ee
@VLAD-pi6ee 2 жыл бұрын
Всё понятно но скажи где это может быть использовано в сознании чего либо?
@QQ-th7yw
@QQ-th7yw 2 жыл бұрын
топ
@DIO-ed1ml
@DIO-ed1ml 2 жыл бұрын
Признаться, не понял. Только общий посыл(
@pechen57.
@pechen57. 2 жыл бұрын
какой сексистский урок😂 на самом деле самая удобная подача для меня
@nfew
@nfew 2 жыл бұрын
Я два часа страдал и думал почему у меня не работает код, потом меня осенило... я не объявил main() в классе Start...
@blossomxs
@blossomxs Жыл бұрын
все норм ,но почему ни разу прогу не запустил то
@АндрейЛысенко-й4ш
@АндрейЛысенко-й4ш 7 ай бұрын
Но ведь реализация метода play() интерфейса Player или read() интерфейса Study должна где-то быть прописана, а это значит что мы должны создать классы Player и Student, объекты которых по идее и должны быть созданы в Game и School, хоть их там и 50 штук будет например, ведь каждый из них реализует метод play или study по разному. И вот спрашивается на кой нам интерфейс? Это круто что через него можно вызывать тот или иной метод помещая в него определенный объект, который был создан на основе этого интерфейса, но разве не проще вызвать метод через имя объекта? И не надо будет нагромождать код интерфейсами и их объектами! Я рил не понимаю для каких реальных целей существуют интерфейсы, разве что для решения проблем с множественным наследием
@АндрейЛысенко-й4ш
@АндрейЛысенко-й4ш 7 ай бұрын
Я имею ввиду: что в классе Player, что в его интерфейсе будет один раз прописан один и тот же метод play(), но вот вопрос: зачем мне имплементироваться от интерфейса, если можно просто в классе Player написать метод play() и исключить лишние строки кода в виде интерфейса? типо еще кто-то кроме плейера может обладать таким же методом? Вроде нет. Student и Player это разные объекты содержащие разные методы и свойства. Тут все слишком зависит от контекста: если мы делаем программу для Школы, то нам не важно, что студент является Человеком или Игроком, он просто студент, который будет иметь свойства пол, возраст имя. Так же и с Игроком. А вот если мы ведем речь о Человеке, что он может быть как Игроком, так и Студентом, то да, тут интерфейс может пригодится. Все😂 я сам себе рассказал че это такое) Тебе просто надо было вместо мальчика и девочки брать понятие Человек, так как пол это свойство человека
@BoddenDeni
@BoddenDeni Жыл бұрын
Зашла..
@Slevin_87
@Slevin_87 2 жыл бұрын
Увы для меня не сильно понятно......
@F00Ntik
@F00Ntik 3 жыл бұрын
вроде говорил, что будет 3 урока в неделю... а сейчас почти неделю нету новых видео(
@leshamarshal
@leshamarshal 3 жыл бұрын
есть такое дело. Чёт заработался
@ЕвгенийЕрохин-ш4ф
@ЕвгенийЕрохин-ш4ф 3 жыл бұрын
Упаси Господи трансгендер... )))))))
@VLAD-pi6ee
@VLAD-pi6ee 2 жыл бұрын
А ты это писал ещё 7 месяцев назад когда это было не так принято а щас все начали дич творить
@UserName-bf7vi
@UserName-bf7vi 2 жыл бұрын
@@VLAD-pi6ee Полностью поддерживаю
@mikaadvgf
@mikaadvgf Ай бұрын
Очень быстро(((
@Petrengo1
@Petrengo1 Жыл бұрын
Тяжеловато
@user-xo9ux5dv4f
@user-xo9ux5dv4f Жыл бұрын
увидел "интерфейс" первое впечатление "сейчас будет наконец-то что-то про формы ввода, вывода информации..." ан нет... чУдной язык джава и термины в нем ...
@gadgad6775
@gadgad6775 Жыл бұрын
нехватает примеров с исполнением задач через интерфейсы, да есть разные классы которые могут на интерфейсы ссылаться но видео стоит переработать
@ЛёваБогатищев
@ЛёваБогатищев Жыл бұрын
The Sims на минималках?
@doinkes7764
@doinkes7764 Жыл бұрын
Со второго раза понял, но не понял как в классе Main запустить метод у Player'a
@Xelinヅ
@Xelinヅ Жыл бұрын
спасибо!
Apple peeling hack @scottsreality
00:37
_vector_
Рет қаралды 127 МЛН
Girl, dig gently, or it will leak out soon.#funny #cute #comedy
00:17
Funny daughter's daily life
Рет қаралды 51 МЛН
大家都拉出了什么#小丑 #shorts
00:35
好人小丑
Рет қаралды 96 МЛН
Уроки для начинающих Java / #9 Классы в Java
27:19
Лёша Маршал
Рет қаралды 41 М.
Тестировщик что это за работа
22:56
Лёша Маршал
Рет қаралды 35 М.
Уроки Java для начинающих / #7 - циклы for, wile, do wile
19:29
Java Абстрактный класс VS Интерфейс
9:51
Петр Арсентьев
Рет қаралды 18 М.
Apple peeling hack @scottsreality
00:37
_vector_
Рет қаралды 127 МЛН