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

Поделиться
HTML-код
  • Опубликовано: 29 сен 2024

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

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

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

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

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

  • @ВсеволодЗорин-л6н
    @ВсеволодЗорин-л6н 5 лет назад +17

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

  • @victordar7066
    @victordar7066 5 лет назад +15

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

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

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

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

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

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

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

  • @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()
    {
    }
    }

  • @melkey_poc
    @melkey_poc 2 месяца назад

    Прошло 5 лет, кое что поменялось и в мире и в самом c#, но видео все еще актуально и полезно. Спасибо автору огромное!

  • @ВалерийВаланчус
    @ВалерийВаланчус 3 года назад +1

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

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

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

  • @ВалерийВаланчус
    @ВалерийВаланчус 3 года назад +2

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

  • @Flett-t7u
    @Flett-t7u 11 месяцев назад +1

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

  • @mikeistp5736
    @mikeistp5736 5 лет назад +1

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

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

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

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

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

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

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

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

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

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

    smotryu na skorosti 1.5x hihi

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

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

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

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

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

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

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

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

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

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

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

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

  • @I-PixALbI4-I
    @I-PixALbI4-I 3 года назад

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

  • @РайМахровский
    @РайМахровский Год назад

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

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

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

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

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

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

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

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

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

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

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

  • @Баюн-ш8х
    @Баюн-ш8х 3 года назад

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      комментарий

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

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

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

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

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

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

    • @Ислам-э9х3х
      @Ислам-э9х3х 3 года назад

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

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

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

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

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

    • @АртемНиколаевич-о7п
      @АртемНиколаевич-о7п Год назад

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

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

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

  • @ВалерийВаланчус
    @ВалерийВаланчус 3 года назад

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

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

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

    • @ВалерийВаланчус
      @ВалерийВаланчус 3 года назад

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

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

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

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

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

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

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

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

    Спасибо

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

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

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

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

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

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

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

    12:00:00

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

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

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

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

  • @ВалерийВаланчус
    @ВалерийВаланчус 3 года назад

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

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

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

    • @ВалерийВаланчус
      @ВалерийВаланчус 3 года назад

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

    • @ВалерийВаланчус
      @ВалерийВаланчус 3 года назад

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

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

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

  • @ВалерийВаланчус
    @ВалерийВаланчус 3 года назад

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

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

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

    • @ВалерийВаланчус
      @ВалерийВаланчус 3 года назад +2

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

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

      @@ВалерийВаланчус я тоже уснул и во сне изучил exception, delegate

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

    спасибо

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

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

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

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

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

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

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

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