ym104432846
Вставьте ссылку на видео из Youtube, Rutube, VK видео
Задайте вопрос по видео
Что вас интересует?
00:00:15
Интерфейсы в Си Шарп:
  • Интерфейсы похожи на абстрактные классы, но не могут иметь реализации
  • Объект нельзя создать на основе интерфейса
  • В интерфейсах описываются методы и поля без их реализации
00:00:45
Особенности использования интерфейсов:
  • Возможность реализации нескольких интерфейсов одним классом
  • Отличие от наследования классов, позволяющее реализовывать множество интерфейсов одновременно
00:01:16
Создание интерфейса:
  • Шаги создания интерфейса в Си Шарп
  • Формат именования интерфейсов, начиная с буквы "I"
  • Пример описания полей и методов в интерфейсе без их реализации
00:04:04
Реализация интерфейса в классе:
  • Процесс добавления интерфейса к классу
  • Автоматическая генерация шаблонов реализации полей и методов интерфейса
  • Использование автоматической реализации полей и методов
00:05:51
Применение интерфейсов:
  • Интерфейсы описывают действия без указания реализации
  • Удобство повторного использования описания действий в разных классах
  • Обязательность полной реализации всех методов интерфейса в классе
00:08:07
Многократное использование интерфейсов:
  • Возможность реализации несколькими классами одного и того же интерфейса
  • Различия в реализации одинаковых интерфейсов разными классами
  • Примеры применения интерфейсов для различных объектов
0: Привет, в ходе этого урока мы с вами познакомимся с интерфейсами и научимся их использовать в языке программирования си шарп. А перед началом я бы хотел порекомендовать сайт it прокер точка ком. На этом сайте вы найдёте код, домашнее задание и много другой полезной информации. Ссылка на этот урок.
1: На сайте будет в описании к этому видео переходите не пожалеете. Интерфейсы максимально схожи с абстрактными классами. Точно так же, как и в абстрактных классах. Мы не можем создать объект на основе интерфейса. Кроме того, в интерфейсах мы можем лишь описывать
2: Какие-либо методы, а также поля, но мы не можем их реализовывать. Реализация всех этих методов она уже проходит в других классах, которые как раз реализовывают сам интерфейс. Важной особенностью интерфейсов является то, что мы можем ре,
3: Реализовывать не только 1 интерфейс внутри 1 класса, а можем реализовывать сразу несколько интерфейсов. То есть, например, когда мы говорим про наследование, мы всегда можем наследовать лишь от 1 класса. В то же время мы можем реализовывать не только 1 интерфейс.
4: А сразу через запятую можем прописать много интерфейсов и, соответственно, реализовывать много вот этих вот возможностей, которые прописаны внутри самих этих интерфейсов. Для начала мы давайте создадим сам по себе некий интерфейс. Для этого мы создадим некий новый файл, пускай этот файл будет
5: Будет называться как ран точка cc. Ну, допустим, у него будет такое название здесь мы прописываем абсолютно тоже самое, что и раньше, то есть для начала мы прописываем неймспейс пространство имён, здесь мы указываем, например, project, и дальше вместо ключевого слова class мы с вами прописываем ключевое слово.
6: Интерфейс. Тем самым мы говорим, что мы создаём именно с вами интерфейс. Интерфейсы можно называть как угодно, но обычно их называют в следующем формате изначально идёт буквочка ай в верхнем регистре и дальше идёт само название интерфейса, название мо,
7: Может быть каким угодно, но поскольку мой файл называется как ран, то я, пожалуй, тоже назову здесь этот интерфейс как run. Конечно же, вы, конечно же, вы можете назвать хоть в таком формате ваш интерфейс, но тогда это будет не особо понятно, что за интерфейс это такой, если вы называете его
8: В начале буквочку i и потом название для самого интерфейса, то вы как бы сразу говорите другим программистам, что это у вас интерфейс, да, но как бы за счёт буквочки. Ай, это будет понятно. Ну и плюс даёте ему какое-то осмысленное название. Дальше мы с вами открываем фигур.
9: Скобки и здесь мы уже можем прописывать какие-либо поля, а также можем прописывать какие-либо методы, но без их реализации. То есть, например в абстрактном классе мы с вами здесь могли прописывать методы, ну или даже даже конструкторы мы могли здесь прописывать, но мы могли прописывать
10: Методы с их реализацией. Да, видите, вот здесь у меня есть сет вельюс и есть его определённая реализация. Также у нас есть абстрактный метод, где у нас нету его реализации. Мы просто поставили точку с запятой и сказали, что этот метод 100% нужно будет реализовать в каком-либо
11: Другом классе, который будет наследоваться от этого класса. Здесь же, в интерфейсе, мы всегда создаём что-то в духе вот этих вот абстрактных методов, которые нужно будет реализовать 100% в классах, что будут реализовывать данный интерфейс здесь, поскольку я создаю сейчас не
12: Интерфейс, который как бы описывает передвижение, даже вернее, бег для определённого нашего робота, то, соответственно, мы давайте, наверное, здесь создадим несколько переменных, ну, вернее, несколько полей. Во первых, у нас будет поле с типом данных float, и здесь будет
13: Будет и здесь будет название как speed. Также мы можем указать, что это будет не просто поле, а это может быть аксессори этому здесь я могу даже прописать, что мы сможем устанавливать, а также мы сможем получать значение из этого поля, да, ну допустим, давайте даже здесь создадим некий аксе.
14: Дополнительно здесь я могу создать некий метод, причём опять же мне не нужно реализовывать сам этот метод здесь я просто его описываю например, пускай мой метод он будет называться как робот ран ну допустим вот что-то в этом духе и здесь я просто
15: Ставлю круглые скобки и ставлю точку с запятой все. То есть это и называется просто описать сам метод, но его не реализовывать, да, вот, например, у меня тут пускай только будет 1 такой метод. Конечно же, в этот интерфейс вы можете подобавлять и другие различные аксессоры поля или же просто
16: Методы но мы давайте пока остановимся лишь на 2 вот этих вот вещах теперь я бы хотел сделать так что у меня вот этот вот мой класс он дополни ну класс бот он дополнительно ещё будет реализовывать такой интерфейс который называется iron да соответственно что
17: Мне такое реализовать, я здесь ставлю запятую, и здесь я просто прописываю тот интерфейс, который я дополнительно ещё буду реализовывать. Если бы, ну, если бы у меня не существовало здесь ещё наследования, то в таком случае, ну, кстати, можно было бы даже вот так вот сделать. Давайте мы так и, возможно, сделаем вот наприме.
18: Для класса робот у меня здесь не существует наследования и здесь я просто добавляю тоже самое двоеточие и просто говорю, что этот абстрактный класс, он ещё дополнительно будет реализовывать наш интерфейс айран. В таком случае нам необходимо внутри этого абстрактного метода.
19: Реализовать все те вещи, которые были внутри самого интерфейса, причём нам необходимо реализовать не просто только методы, но также и сами поля или же аксессоры. Поэтому здесь я могу просто нажать на подсказку, нажать на имплемент интерфейс и он нам его реализует сам.
20: Этот интерфейс и в моём случае у меня получается вот что у меня, во первых, добавляется сам по себе вот этот вот акцессор причём здесь когда мы будем получать данные или устанавливать данные, будет выдаваться ошибка ну тут это как бы прописано и мы давайте лучше это поменяем мы просто пропишем
21: Есть get сет, то есть можно получить данные, также можно установить данные. Вот. И дополнительно здесь ещё был реализован метод робот ран. Конечно же, если бы мы реализовывали с вами игру, то здесь, то здесь бы мы добавили возможность бега для самого робота, но
22: На данный момент мы давайте просто будем писать в консоль робот из now running, да, то есть что робот как бы он сейчас у нас бежит, соответственно, вот это все, что мы будем делать внутри самого этого метода. Зачем нужны интерфейсы, интерфейсы, они позволяют нам описать просто некое определён.
23: Действие. Вот, например, в моём случае я описываю действие бега, да, также можно было бы описать, например, действие подключения к базе данных, действие удаления каких-либо файлов или что-то в этом духе. Ну, в любом случае мы просто описываем некое определённое там действие, здесь же
24: Интерфейса, мы не описываем реализацию самого этого действия, мы лишь указываем, как бы какие поля, какие аксессоры, а также, возможно, какие методы нам потребуются для реализации этого действия. Далее, когда я хочу это действие, доба
25: Ну, к примеру, к роботу. В таком случае я, конечно же, могу это все вручную прописать, могу все эти поля вручную вот здесь прописать, но я делаю по другому. Я просто говорю, что я буду реализовывать определённый интерфейс, и как только я его начинаю реализовывать, у меня автоматически
26: Как бы, ну, подключаются все вот эти вот поля, все вот эти вот аксессоры и методы, которые мне нужно было бы реализовать для создания возможности бега. То есть мне уже теперь не нужно постоянно помнить, а что конкретно же мне нужно сделать? А что конкретно мне нужно?
27: Реализовать, чтобы добавить возможность бега. Да я просто подключаю определённый интерфейс там есть все необходимые вот эти вот поля и методы и конечно же, реализацию этих методов я ещё прописываю все равно вот здесь в самом, внутри самого класса но так уже
28: Происходит по той причине, потому что, например, для робота бег это может быть что-то 1, например, там он бежит на 2 лапках, да, например, а если мы будем ещё создавать класс машина и там тоже я попробую реализовать вот этот вот интерфейс ран, то в таком случае там бег это уже совершенно
29: Другое будет. Это будет наоборот, ускорение, например, для автомобиля, да, или что-то в этом духе, или там, например, если ещё у нас будет класс человек, я тоже буду реализовывать этот интерфейс, то, соответственно, мне тоже понадобятся все те же самые методы, все те же самые поля мне понадобятся, но только реал.
30: Изация уже будет отличаться, в общем то, интерфейсы, они удобны тем, что мы в 1 месте описываем все то, что нам необходимо будет реализовать в будущем. То есть здесь мы это не реализовываем, мы просто описываем, что нужно будет реализовать и дальше, в зависимости от класса мы это реализовываем и нам просто не
31: Нужно помнить, что же конкретно нужно будет ещё реализовать. Ведь ведь все вот эти вот методы, они будут записаны уже в 1 интерфейсе. Каждый раз мы их будем 100% реализовывать, иначе у нас будет выдаваться ошибка. Ну и ещё 1 нюанс это то, что мы можем реализовывать сразу несколько
32: Интерфейсов. Вот например давайте мы создадим возможно, ещё некий новый файл, он будет называться как джамп точка cc и соответственно, это тоже у нас будет интерфейс поэтому предлагаю здесь немного скопировать кода, он у нас будет называться как i jump. Например, здесь у нас
33: Будет, например, например, поле, которое будет называться как игрек. И, например, это просто высота, на которую мы будем подпрыгивать. Ну, допустим, что-то в этом духе. И здесь мы давайте будем с вами реализовывать просто такой метод, который будет называться как джамп.
34: Ну, например, вот так. Теперь же я беру и говорю о том, что я хочу ещё реализовывать 2 интерфейс, да, для этого я просто здесь ставлю запятую и указываю, что я реализовываю такой интерфейс, как i jump, опять же, мне необходимо его реализовать, поэтому я нажимаю на подсказку.
35: И вот сюда у меня добавляются дополнительные все вот эти вот поля, аксессоры, а также различные методы. Ну, например, флот игрек мы с вами перепишем на просто get сет. И также у нас здесь ещё есть новый теперь метод, который добавлен, он называется
36: Jump. И, соответственно, здесь я тоже могу что-то выводить. Например, просто robot is jumping. Давайте здесь будет написано и соответственно, вот что-то в этом духе. Таким образом, если я теперь захочу добавить ещё возможность прыжка, например, для какого-то нашего будущего другого класса, напри.
37: Например, у меня будет ещё класс человек, и я там тоже захочу реализовать возможность прыжка, то я просто подключаю вот этот вот интерфейс. И, соответственно, я сразу понимаю, что конкретно мне нужно будет реализовать, какие конкретно мне методы нужно будет реализовать для того, чтобы у меня этот человек
38: Начал прыгать. То есть мне нужно будет реализовать просто саму эту переменную, само сам этот акцессор игрек, да, в котором мы будем указывать просто высоту, на которую он будет подпрыгивать. И нужно ещё лишь 1 метод будет реализовать это сам метод jump, в котором я уже пропишу там
39: Например, просто поднятие конкретного объекта по координате игрек на столько-то единиц вверх, да, вот и все. Вот. То есть 2 вещи мне нужно будет просто реализовать таким образом. Интерфейсы это очень похожие вещи на абстрактные классы, только что-то в духе, только они
40: Что-то в духе укорочённой версии, да, то есть в интерфейсе мы можем прописывать просто методы, а также аксессоры и paul без их реализации, а дальше мы эти интерфейсы можем реализовывать, причём мы можем реализовывать сразу несколько интерфейсов для 1 единственного класса, что также является очень и очень удобным.
41: Ну что же, на этом наш урок подходит к концу. Надеюсь, он вам понравился. Если так, то ставьте лайки и подписывайтесь на канал, а также вступайте в нашу группу вконтакте.