Интерфейсы C# (Interface) - Учим Шарп #13

Поделиться
HTML-код
  • Опубликовано: 19 дек 2018
  • Интерфейсы C# (Interface C#) и их имплиментация
    На этом занятии мы узнаем, что такое интерфейс (interface) в языке программирования C#, научимся их реализовывать (имплементировать) явно и неявно. Узнаем основные отличия интерфейсов и абстрактных классов.
    -----------
    ПОДПИШИСЬ на соцсети:
    🔴 TELEGRAM: bit.ly/tg_codeblog
    🔴 VK: bit.ly/vk_codeblog
    🔴 INSTAGRAM: bit.ly/inst_codeblog
    🔴 Яндекс Дзен: bit.ly/zen_codeblog
    🔴 FACEBOOK: bit.ly/fb_codeblog
    🔴 TWITTER: bit.ly/twit_codeblog
    🔴 Мой блог: bit.ly/site_codeblog
    -----------
    ПОДДЕРЖИ развитие CODE BLOG:
    💲 Донат: bit.ly/donate_codeblog
    💲 Спонсорство: bit.ly/patreon_codeblog
    -----------
    СМОТРИ мои обучающие курсы:
    👉 УЧИМ ШАРП: bit.ly/cs_codeblog
    👉 ПРАКТИЧЕСКИЙ ИНТЕНСИВ #1: bit.ly/fit_codeblog
    👉 ПРАКТИЧЕСКИЙ ИНТЕНСИВ #2: bit.ly/crm_codeblog
    👉 СТРУКТУРЫ ДАННЫХ: bit.ly/ds_codeblog
    👉 АЛГОРИТМЫ СОРТИРОВКИ: bit.ly/sort_codeblog
    👉 ОТВЕТЫ НА ВОПРОСЫ: bit.ly/faq_codeblog
    👉 IT ПЕРЕОЗВУЧКА: bit.ly/resound_codeblog
    👉 НЕЙРОННАЯ СЕТЬ: bit.ly/ai_codeblog
    👉 ПАТТЕРНЫ ПРОЕКТИРОВАНИЯ: bit.ly/pattern_codeblog
    👉 CODE REVIEW: bit.ly/review_codeblog
    👉 CLR via C#: bit.ly/clr_codeblog
    -----------
    Кстати, меня зовут Шванов Вадим, и я профессиональный .NET разработчик с 2011 года и автор этого канала CODE BLOG. Я рассказываю про IT технологии и веду абсолютно бесплатный курс по языку C# с нуля. В его рамках мы рассмотрим как базовый синтаксис языка C Sharp, так и его практическое применение и специальные технологии, такие как ASP .NET, .NET Core, ASP.NET MVC, Unity, WPF, структуры данных и алгоритмы, с#, dotnet, паттерны проектирования, информатика, csharp, программное обеспечение и многое другое. Для меня важно не только показать практическое применение языка си шарп, но и объяснить основную идею и базовые понятия Computer Science. В качестве основного инструмента разработки используется Visual Studio c# и проекты на Visual c#. Если вам нравятся такие каналы как хауди хо, айти борода, Soer или ExtremeCode, то здесь вам точно понравится.
    -----------
    #codeblog #программирование #csharp #ityoutubersru #программист #разработка

Комментарии • 80

  • @CODEBLOG
    @CODEBLOG  5 лет назад +16

    На этом занятии мы узнаем, что такое интерфейс (interface) в языке программирования C#, научимся их реализовывать (имплементировать) явно и неявно. Узнаем основные отличия интерфейсов и абстрактных классов.

    • @HeIvis
      @HeIvis Год назад

      CODE BLOG, не подскажешь. Удобно ли будет на ноутбуке маке разрабатывать под виндовс?

  • @user-pd4gt9zz9c
    @user-pd4gt9zz9c 5 лет назад +17

    Благодарю. Помогло заполнить некие пробелы.

  • @OnikMod
    @OnikMod 4 года назад +5

    Очень круто. Большое спасибо.
    После двух предыдущих тем эта зашла как по маслу)))

  • @user-rv8lg3nl1b
    @user-rv8lg3nl1b Год назад

    Мега полезный видеоурок, всё очень понятно, спасибо!

  • @cartoonshow272
    @cartoonshow272 3 года назад

    Как всегда отличный урок. Спасибо огромное за уроки!

  • @eugenekrutoy1475
    @eugenekrutoy1475 3 года назад

    Большое спасибо! Огромное просто!

  • @victordar7066
    @victordar7066 4 года назад +15

    Спасибо за уроки. Они великолепны =)

    • @CODEBLOG
      @CODEBLOG  4 года назад +1

      Всегда пожалуйста )

  • @vusalaliyev9955
    @vusalaliyev9955 Год назад

    Красавчик других слов нет

  • @user-qf5qo7bh5m
    @user-qf5qo7bh5m 8 месяцев назад +1

    Спасибо вам за ваши уроки

  • @GenkaKorobkin
    @GenkaKorobkin 4 года назад +10

    Отличные уроки, большое спасибо за ваш труд!

    • @phat80
      @phat80 3 года назад

      Ну не знаю, чел часто путает понятия. Даже когда вроде сначала говорит правильно, что например, интерфейсы не наследуются. Далее сам начинает говорить, что тот или иной класс наследуется от интерфейса. Список называет массивом, хотя это совершенно разные понятия. В общем, считаю, что если берешься учить, будь добр, знай предмет на 5 с плюсом. А так получается каждый второй разработчик уже учить лезет, хотя у самого знания далеко не идеальные. Поэтому они только путают тех, кто пытается учить. Потом у людей вопросы, а почему их завалили на собеседовании, ведь они честно отсмотрели тот или иной курс и все запомнили. А оказывается, что большинство курсов записывают вообще не профессионалы, а те, кто сам только вчера тему изучил. Даже какая-то оговорка может отложиться в голове ученика, поэтому надо следить, чтобы даже оговорок никаких не было. Ну или хотя бы делать пометки в видео потом, как делают те, кто все-таки чувствует какую-то ответственность.

  • @user-nv4yz5bt4g
    @user-nv4yz5bt4g 3 года назад +2

    За болванку вам отдельное спасибо .

  • @ivanomelchenko1895
    @ivanomelchenko1895 2 года назад

    спасибо за стримм

  • @paveldukov
    @paveldukov 5 лет назад

    большое спасибо

  • @Sergioshe
    @Sergioshe 4 года назад

    Спасибо

  • @user-nv4yz5bt4g
    @user-nv4yz5bt4g 3 года назад

    Этот ролик у вас получился лучше и проще чем CLR via C# глава 13 .

    • @CODEBLOG
      @CODEBLOG  3 года назад +1

      так в том и смысл, что этот ролик для начинающих, а clr via c# более сложный )

    • @user-nv4yz5bt4g
      @user-nv4yz5bt4g 3 года назад +2

      Вчера я уснул на этом ролике , когда проснулся он еще шел и шел . Я интелектуальнно буксую от таково объема информации .

    • @TheKovalAndrey
      @TheKovalAndrey Год назад +2

      @@user-nv4yz5bt4g я тоже уснул и во сне изучил exception, delegate

  • @user-hh7cy8tr6h
    @user-hh7cy8tr6h 3 года назад

    Надо бы обновить информацию, интерфейсы теперь поддерживают реализацию )

  • @JointJaBa
    @JointJaBa 4 года назад

    Вопрос, можно ли (а если можно, то как) у свойств интерфейса и у классов, которые унаследовали этот интерфейс, быть разные уровни доступа, например у интерфейса есть свойство T, а у класса наследника будет свойство protected T?

  • @dizzyark9221
    @dizzyark9221 4 года назад +2

    Вадим просто шикарное пояснение многие вещи стали понятны. Есть вопрос за видимость классов, переменных. Абсолютно понятен принцип считать всех идиотами, но при этом все те же переменные мы же прописываем сами. У пользователя нет доступа к переменным и нет возможности запросить что то публичное если мы это не указывали. Что то этот момент для чего используются приватные вещи я не понимаю. Не затруднит Вас просветить этот момент

    • @NeizBest
      @NeizBest 3 года назад

      Для удобства написания кода в том числе.
      Если какая-то переменная доступна, её можно будет выбрать в выпадающем списке.
      Когда у тебя будет большой проект с большим количеством кода - не мудрено будет что-то перепутать.
      Может ещё какие-то причины есть, но тут я не знаю, сам новичок)

    • @dizzyark9221
      @dizzyark9221 3 года назад

      @@NeizBest удобство в работе понятно но здесь идёт вопрос безопасности а вот здесь я как раз и не понимаю

  • @evgeniyt.2858
    @evgeniyt.2858 Год назад

    Можно представить интерфейс как некий контракт который обязаны исполнить все наследующие этот интерфейс классы. И этот же контракт будут использовать клиенты (имеется в виду, например, другие классы) при работе с этим классом.

  • @delete3656
    @delete3656 4 года назад +2

    Домашнее задание:ОТВЕТ:
    interface IMyInterface
    {
    int Number { get; }
    void Show();
    }
    interface IMyInterfaceTwo : IMyInterface
    {
    void First();
    }
    class Program : IMyInterfaceTwo
    {
    public int Number
    {
    get
    {
    return 0;
    }
    }
    public void Show()
    {
    }
    public void First()
    {
    }
    static void Main()
    {
    }
    }

  • @sashkosashok
    @sashkosashok 4 года назад

    Нормально, где-то тут я остановился в прошлый раз.

    • @CODEBLOG
      @CODEBLOG  4 года назад +1

      Успехов в продолжении изучения )

  • @TheFryOS
    @TheFryOS 5 лет назад +2

    в 5:27 начало. Автору Спасибо.

    • @CODEBLOG
      @CODEBLOG  5 лет назад

      Всегда пожалуйста )

  • @cors1k495
    @cors1k495 4 года назад

    спасибо

    • @CODEBLOG
      @CODEBLOG  4 года назад

      Всегда пожалуйста )

  • @jeb_7749
    @jeb_7749 3 года назад

    54:30 А что мешает так же сделать с классами?

  • @mikeistp5736
    @mikeistp5736 4 года назад +1

    Вот тут ещё есть хорошее пояснение этой же темы, если кому ещё не понятно: ruclips.net/video/FQf14kj8HwU/видео.html
    А так то зачёт автору! столько всего и на халяву рассказывает.

  • @stan5214
    @stan5214 4 года назад +1

    Для наглядности можно реализовать интерфейсы IRace и IDecay. Первый для лады, 2й для БМВ :-P

    • @CODEBLOG
      @CODEBLOG  4 года назад

      Ты что, тебя любители Приор загрызут )))

  • @pssp4450
    @pssp4450 4 года назад

    Вопрос по наследованию и реализации интерфейсов
    25:19 как я понял это наследование интерфейса, верно?
    32:10 а тут реализация? из-за того что класс "наследует" более одного интерфейса это называется реализацией?
    или же наследование и реализация для интерфейса это одно и тоже? (суть не в сехе работы, а как что называют), а когда интерфейсов больше одного то это уже множественное реализация?

    • @abdusamadjuraev2615
      @abdusamadjuraev2615 4 года назад

      да более 2 наследований называется реализацией!!

    • @CODEBLOG
      @CODEBLOG  4 года назад +3

      На самом деле здесь просто не совсем правильно говорить про наследование интерфейсов. Наследование подразумевает, что ты получаешь логику из предка, а интерфейс не содержит логики. Поэтому корректнее говорить про реализацию интерфейса. Когда ты реализуешь интерфейс ты всего лишь говоришь, что в классе есть такие же члены, как объявленные в интерфейсе. но напрямую интерфейс и класс его реализующий не связаны, интерфейс не передает в класс логику

  • @NeizBest
    @NeizBest 3 года назад

    26:15...
    Каким сочетанием клавиш это было сделано?
    (Автоматическая реализация интерфейса в классе)
    Или это чисто фишка VS, которую в других средах не найти?
    ПС, спасибо за урок, всё было неплохо)
    На этот раз было проще уловить, а точнее, здесь мало элементов C# затронуто, и незнакомых лично для меня вообще не было.

    • @yanas2226
      @yanas2226 Год назад

      2 года прошло, узнал ответ на свой вопрос?

  • @juliusmalkov9620
    @juliusmalkov9620 5 лет назад +7

    почему так мало лаек?! ленивые подписчики!!!

  • @imbackinussr8991
    @imbackinussr8991 3 месяца назад

    А как сделать так, чтобы сразу в Solution Explorer показывал ошибку, в смысле подчеркивалось красным. Кто знает, ответьте пожалуйста

  • @Shikinev_2
    @Shikinev_2 3 года назад

    17:24 C версии c# 8 можно задавать модификаторы доступа перед методом

    • @phat80
      @phat80 3 года назад

      Это видео записано до выхода версии 8, неужели вы этого не видите?

    • @vladportnov3041
      @vladportnov3041 2 года назад +1

      @@phat80 человек просто проинформировал, в чем проблема?

  • @user-nv4yz5bt4g
    @user-nv4yz5bt4g 3 года назад

    В интерфейс можно как-нибудь поместить в объект управления со свойствам второй формы чтобы к нему получить доступ из первой формы или нет ?

    • @CODEBLOG
      @CODEBLOG  3 года назад

      можно связать формы через события или можно создать коллекцию форм и обращаться из одной в другую

    • @user-nv4yz5bt4g
      @user-nv4yz5bt4g 3 года назад

      Менять только свойства второй формы из первой через ее объект можно легко поменять его в событии - одним кликом очень легко . А менять свойства объектов которые находятся на второй форме - трудно , они недоступны из первой формы .

    • @user-nv4yz5bt4g
      @user-nv4yz5bt4g 3 года назад

      Если два одинаковых свойства связанные одним интерфейсом разных классов , то получив значения первое свойства передаст это значение во второй класс на второе свойства ? У интерфейсов есть объекты ? Я их только-только учу .

  • @andreyvolkov3117
    @andreyvolkov3117 3 года назад

    1:02:00 (или как-то так) А в С++ есть же abstract и virtual, который по сути делает множественное наследование классов удобнее, ведь не нужно разделять на классы и интерфейсы, можно просто фигачить. (если я правильно помню)

    • @processing17
      @processing17 7 месяцев назад

      Это и в с# тоже есть вроде

  • @dmytropetkevych8588
    @dmytropetkevych8588 4 года назад

    У меня при неявной реализации Move() выдает ошибку и просит явную реализацию для каждого интерфейса

  • @user-nv4yz5bt4g
    @user-nv4yz5bt4g 3 года назад

    Имплементация метода и его интерфейса похожа на простое описание метода этот метод будет и так доступен без интерфейса из объекта этого класса не понимаю в чем здесь фишка ? Может этот метод реализуется водном классе , доступен будет где наследуется этот интерфейс пусть из пустого класса ?

    • @CODEBLOG
      @CODEBLOG  3 года назад

      фишка в полиморфизме. Следующий ролик будет как раз с демонстрацией практического применения интерфейсов

    • @user-nv4yz5bt4g
      @user-nv4yz5bt4g 3 года назад

      Жду с нетерпением . Тупо переписал ваш этот проект из этого ролика сейчас пытаюсь понять принцип работы интерфейса . У вас ролики избыточно длинные трудно перекопировать проект , но все-таки интересно .

  • @Venustaz
    @Venustaz 3 года назад

    После вопроса об одновременном наследовании класса и реализации интерфейса (или интерфейсов) возник вопрос:
    Что если в классе-родителе, каким-то магическим образом содержится метод, идентичный по сигнатуре методу, определенному в интерфейсе, но при этом класс-родитель, не реализует интерфейс (который нужно реализовать в классе-наследнике).
    А что если класс родитель реализует интерфейс, который так-же необходимо реализовать классом-наследником.

    • @user-jv3je8fi3z
      @user-jv3je8fi3z 3 года назад

      это несложно проверить, но кажется что все должно быть ок, в классе наследнике же реализуется метод для интерфейса через наследование

  • @user-wf9hq9ud6t
    @user-wf9hq9ud6t 3 года назад

    Вместо интерфейса можно использовать абстрактный класс?

    • @CODEBLOG
      @CODEBLOG  3 года назад

      Можно, но не всегда это разумно

  • @user-nv4yz5bt4g
    @user-nv4yz5bt4g 3 года назад +1

    Как вообще осуществляется спонсирование ? Я нажимаю кнопку "Спонсировать" . Деньги откуда снимаются с какого счета ? Наверно с того , куда я плачу за доступ в интернет через платежное агентство ? И как потом прервать перечисления ? Дайте подробную инструктцию . Может один-два месяца можно проспонсировать .

    • @CODEBLOG
      @CODEBLOG  3 года назад

      По идее при первом платеже у тебя должно попросить ввести данные карты. потом каждый месяц будет списываться сумма. Отказаться можно в любой момент в профиле RUclips. Там должна быть кнопка что-то вроде "покупки и спонсорство". Там полный список всех спонсируемых каналов и способ оплаты. можно отключиться там

  • @yriktop5756
    @yriktop5756 3 года назад

    12:00:00

  • @HingalshDealer
    @HingalshDealer 2 года назад

    smotryu na skorosti 1.5x hihi

  • @MikhailPavliuchkov
    @MikhailPavliuchkov 3 года назад

    24:55
    ////
    //// Выполнить перемещение.
    ////
    //// Расстояние.
    //// Время движения.
    Что это?

    • @f0xeri
      @f0xeri 3 года назад

      комментарий

    • @NadolskyiDeniS
      @NadolskyiDeniS 3 года назад

      Комментарий - полное описание метода

    • @Venustaz
      @Venustaz 3 года назад +1

      К комментаторам выше.
      Данная схема, т.е. полное описание метода (или другого), будет так же формировать всплывающую подсказку в VS, если ты где-то захочешь вызвать этот метод.
      Это особенно заметно при использовании методов стандартной библиотеки, только начинаешь писать, а там уже написана подсказка, что метод делает, какие параметры что обозначают.

  • @yriktop5756
    @yriktop5756 3 года назад

    Кто за шарп комент:шарп.
    Кто за c++ коммент c++.

  • @vladoss4643
    @vladoss4643 Год назад

    Вопрос. А зачем тогда нужны абстрактные классы, если мы все можем через интерфейсы реализовать?

    • @BrownAleks
      @BrownAleks Год назад

      Если есть какие либо реализации или поля в интерфейсе, то все они в производных классах будут статичные. А реализации и поля унаследованные от абстрактных классов, для каждого производного экземпляра будет своя версия состояния.

    • @user-zp7yf7rr9d
      @user-zp7yf7rr9d 10 месяцев назад

      Разные смысловые функции. На один класс можно кинуть несколько интерфейсов.

  • @veerit3822
    @veerit3822 3 года назад

    за 100к побреешься налысо?

  • @revitmepsuhovich8668
    @revitmepsuhovich8668 5 лет назад

    зАЧЕМ ТАК ДОЛГО???