Уроки C# (C sharp) | #22 - Интерфейсы

Sdílet
Vložit
  • čas přidán 6. 09. 2024
  • В этом уроке мы с вами выучим что такое интерфейсы, как их можно использовать и зачем вообще они нужны. Кроме того, мы также с вами выучим множественное наследование классов.
    ✔ Основной сайт: itproger.com/
    ✔ -------------
    Группа Вк - prog_life
    Группа FaceBook - goo.gl/XW0aaP
    Я в Google+ - goo.gl/Tqt9W0
    Страничка Twitter - / goshadudar
    Страничка Вк - codi999
    ✔ Начните зарабатывать на CZcams - join.air.io/mon...
    ✔ Видео по заработку на CZcams - goo.gl/RLPXV8
    Помощь в развитии канала.
    * Яндекс Деньги: 410014343706921
    * Кошельки WebMoney:
    - Доллар: Z331064341236
    - Гривна: U386388718252
    - Рубль: R214610220703

Komentáře • 68

  • @alexeyt1572
    @alexeyt1572 Před 5 lety +38

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

  • @user-cf2cp6vn7c
    @user-cf2cp6vn7c Před 6 lety +71

    То чувство, когда люди в комментариях объясняют понятнее.

  • @azzect
    @azzect Před 7 lety +78

    Вопрос: " Для чего нужны интерфейсы?"
    Все довольно просто. Для самоконтроля и чтобы не было путаницы.
    Например, если вы будете работать над каким-то проектом в команде, и вам потребуется написать большое количество схожих чем-то классов. Возможно вы будете писать их с товарищем, но для того, чтобы методы и свойства не имели разные названия, чтобы их было определенное количество, вам потребуется написать интерфейс.
    Без него можно, но это менее удобно, ведь в нем все написано, вам остается лишь реализовывать, а не запоминать методы и их названия или просматривать код тысячу раз.

    • @danielzeltser8338
      @danielzeltser8338 Před 6 lety +9

      Nikita Boyko
      Вух*
      Спасибо тебе огромное за столь четкое и понятное обьяснение👍,я уже несколько дней ломал себе голову и пытался найти ответ в интернете по этому поводу 😊

    • @user-tz6bl1ob3d
      @user-tz6bl1ob3d Před 4 lety +1

      Спасибо

    • @overlordshor
      @overlordshor Před 4 lety +1

      После видео примерно до этого определения уже сам дошел, но хотел услышать подтверждение) спасибо)

    • @TolikTabak
      @TolikTabak Před 4 lety

      Тоже хотел поблагодарить за объяснение. А то при просмотре урока то чувство, когда синтаксис не сложен, однако смысл усложнения кода объявлением чего-то заранее не понятен. Прохожу данный плейлист и уже на подступах к завершению этого курса складывается впечатление, что синтаксис языка более или менее начинаю понимать, но где что применять на практике - это размыто. Теперь всё стало на свои места хотя бы в данной теме. Я даже скопировал содержание комментария в свой конспект, т.к. оно раскрывает важную практическую суть интерфейсов.

  • @noname_notnow
    @noname_notnow Před 4 lety +8

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

  • @dixie4007
    @dixie4007 Před 7 lety +36

    Тема зачем нужны интерфейсы не раскрыта, если мы не можем описывать метод внутри интерфейса, и обязаны использовать методы внутри классов наследников с последующим его описанием, можно и без интерфейса объявлять методы и описывать их внутри классов с тем же описанием как и в случае с интерфейсами, зачем нужны интерфейсы?

    • @WhatCookies
      @WhatCookies Před 7 lety +12

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

    • @Qnoize
      @Qnoize Před 5 lety +1

      @@WhatCookies а что посоветуете по С#

  • @maximusend
    @maximusend Před 5 lety +24

    Интерфейсы не наследуются, а реализуются! Зачем вы изначально путаете новичков?!

    • @denissaleksejenko9928
      @denissaleksejenko9928 Před 2 lety

      @@Hunter314414 Ну вообще то разница огромная. Я пришел из front-end, где в typescript интерфейсы служат лишь для описания. Здесь же, слушая автора, я подумал что в c# они используются как самостоятельные классы, от которых можно наследоваться и разница между классами и интерфейсами лишь в том, что от интерфейсов можно делать мультинаследование. Вы действительно разницу не чувствуете? Новичку может и насрать на правильные термины (к слову вам насрать), а человеку, который шарит в программировании, просто входит в синтаксис нового языка, затупливает, потому что не верные термины и описание в целом.

  • @AlexBradley123
    @AlexBradley123 Před 8 lety +6

    Это хорошо что много.)) Хороший и полезный день.
    Единственное, не расписал доступ к классу через интерфейс, а штука очень полезная.)
    То есть:
    Test test_1 = new Test();
    Test_2 test_2 = new Test_2();
    List list = new List ();
    list.Add(test_1);
    list.Add(test_2);
    foreach (ISomeInterface inter in list) {
    inter.Print();
    }

  • @user-du8rw6tb6r
    @user-du8rw6tb6r Před 5 lety +3

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

    • @user-du8rw6tb6r
      @user-du8rw6tb6r Před 5 lety +2

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

  • @MaxYanov
    @MaxYanov Před 5 lety +20

    за труд, спасибо
    НО, урок далек от совершенства,
    объяснения для тех кто в теме (и то, им объяснять уже не нужно)
    для тех кто учится, тема не раскрыта

    • @aleksanterikaansalo
      @aleksanterikaansalo Před rokem

      Как вводный урок, дополняющий другие имеющиеся материалы пойдёт на самом деле. Просто не все используют метод под названием "смотрим за сессию несколько разных источников".

  • @user-iz7xc7zk2i
    @user-iz7xc7zk2i Před 3 lety +1

    Простите, господа, но уже на 9 минуте мне очень захотелось стукнуть нашего любимого блогера :)
    Можно стереть 2 интерфейса и наследование от них и программа будет работать точно так же.

  • @mikhail9797
    @mikhail9797 Před 6 lety +2

    Образно говоря, можно сказать, что интерфейс является шаблоном (классом) Класса, т.е. Классы в каком-то роде являются объектами Интерфейса ))))

  • @intsyn
    @intsyn Před 6 lety +3

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

  • @TheYelanLover
    @TheYelanLover Před 8 lety +43

    Вообще не понимаю смысла их использовать?

    • @Chicagotraders
      @Chicagotraders Před 6 lety

      Ну например для разработки API

    • @xentattoo6464
      @xentattoo6464 Před 6 lety +16

      Я то же раньше не понимал, недавно буквально месяц назад столкнулся с проектом где нужно было очень много методов писать разных. Но все были связаны с одним классом, так вот наследование вышло просто головоломкой. Интерфейсы помогли. Они помогают избежать создания новых ненужных классов.

    • @vscloudead7563
      @vscloudead7563 Před 6 lety +5

      Помогает даже в том случае, когда ты в слепую обрабатываешь класс. Например возьмём плагины. Как ты узнаешь, что там за методы и поля? Конечно через интерфейсы. Можно сразу сказать разработчикам плагинов для твоей программы, что вы должны унаследовать какой-то интерфейс для реализации каких-то методов. Можно этот интерфейс поместить в библиотеку. Разработчик унаследует все методы и поля от интерфейса, реализует их и всё. А ваша программа может через библиотеку(интерфейс) уже интегрировать с классом, написанным разработчиком. Подробнее можно найти в google.

  • @OpalGooDog
    @OpalGooDog Před 4 lety

    Спасибо большое)))!

  • @jacket9271
    @jacket9271 Před 5 lety

    В dotnet'е есть хороший, наглядный пример использования интерфейсов и это интерфейс IEnumerable и несколько других. При наследовании класса от него, компилятор c# может выполнить интерацию универсальных и не универсальных коллекций (цикл foreach) благодаря контракту между IEnumerable и классом, который его наследует. Контракт заключается в том, что класс обязуется реализовать методы, которые требуются для интерации коллекций. Еще один пример - это ICollection. Вы можете указать его в качестве аргумента, метода и т.д и записать в него массив. Так-как массивы наследуют ICollection - тем самым обьязуя реализовать члены класса, которые нужны для коллекций

  • @davidkroods811
    @davidkroods811 Před 6 lety +7

    В C# Нету множественного наследования есть множественная реализация это вам не C++

  • @mikhail9797
    @mikhail9797 Před 6 lety

    Урок - супер!!! Все понятно и доступно. Лайк 100%. Только вопрос в том, зачем интерфейсы (из урока понятно - для множественного наследования, здорово!!!). Но я так же могу и без интерфейсов создать классы (которые рассматриваются в видеоуроке). Мне не совсем понятно: 1) В чем выигрыш в применении интерфейса? 2) Где их действительно нужно применять, а где нет? 3) Можно ли привести какие-то концептуальные пимеры ?
    Заранее, Спасибо

  • @otabekbaratov117
    @otabekbaratov117 Před 4 lety +2

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

  • @roman1324
    @roman1324 Před 6 lety +24

    Множественного наследования в C# НЕТ!
    Ты путаешь с реализацией множества интерфейсов. Боже мой, что Ты несете ((( Сам себя же опровергаешь......
    Интерфейс это не класс, почитайте что такое класс. Класс несет реализацию! Интерфейс ее не несет.
    Интерфейс это открытая (public) часть класса, т.е. методы, св-ва и тп для обращения к ним клиентов класса.
    Они нужны чтобы давать возможность описать/использовать конкретные реализации. А не целиком класс.
    Вот например: интерфейс IEnumerable - он нужен для foreach , ему не нужно знать других методов у класса/генерика и тп, он тупо работает через интерфейс IEnumerable, который реализует все необходимое для последовательного получения элементов из множества (массива, списка и тп).
    Это как в машине у вас интерфейс: это панель приборов, руль, педали и вы управляете машиной через них, а не сидите на движке и не дергаете заслонки, колеса поварачиваете за рычаги, из кабины у вас нет доступа чтобы снять поршневую группу или отключить генератор и тп.
    Интерфейсы нужны для конкретизации действий и возможностей класса.
    Архитектуру ПО удобно разрабатывать на интерфейсах, а уже потом будет добавлена реализация.
    Интерфейс это по сути как шаблон/маска/призма доступа к объекту класса.
    Интерфейс это стандарт описания (сигнатура) методов/св-в и тп.
    Интерфейс гарантирует что метод(ы) и тп будет называться именно так-то, и
    параметры будут именно такими-то и возвращать метод будет именно
    то-то.
    ЗЫ Из видео видо что нет понимания что такое множественное наследование, да и вообще что такое наследование.

    • @user-xd3we2qp4i
      @user-xd3we2qp4i Před 5 lety +2

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

    • @gerty880
      @gerty880 Před 5 lety +7

      @@user-xd3we2qp4i, а я вот наоборот: только после прочтения комментария понял зачем нужны интерфейсы

    • @user-xd3we2qp4i
      @user-xd3we2qp4i Před 5 lety

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

  • @cityedit
    @cityedit Před 6 lety

    Класс

  • @Tom-qr1iu
    @Tom-qr1iu Před 8 lety

    Также создание объектов таких как типо test_1 нужно при работе с библиотеками

  • @anatoliy9696
    @anatoliy9696 Před 8 lety +6

    Непонятно ))) Нафиг они нужны, можно и без интерфейса было написать в классе свойства и метод. Лишний код только на мой взгляд (: Фишка может быть в том, если привестись к интефесу, ну тогда останутся члены только интерфейс. А можете конкретный пример сделать, то что нельзя реализовать абстрактным классом можно реализовать интерфейсом.

    • @thedyxxx
      @thedyxxx Před 7 lety +4

      public Build (IproductionObject product)
      {
      int cost = product.GetProductionCost();
      }
      (взял пример из урока канала "программирование - это просто")
      В метод передается интерфейс. И на месте product может быть несколько различных классов, которые реализуют этот интерфейс.
      Т.е не придется писать отдельно кучу разных методов Build, которые принимают в качестве параметра класс конкретного продукта (а таких продуктов будет, например, сотня). И тогда вместо сотни имеем лишь один метод.
      Сам чайник, но написал как я понял "зачем". Поправьте если вдруг что-то криво написал!

    • @roman1324
      @roman1324 Před 6 lety +1

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

  • @MegaAlexprim
    @MegaAlexprim Před 4 lety

    чет классы Test и Test_2 не хотят наследовать ISomeInterface подсвечен красным, мало того после этого не подсвечивает консоль синим и программа перестает работать. все ломается при создании класса тест_2

    • @MegaAlexprim
      @MegaAlexprim Před 4 lety

      очень странно все это произошло при копировании кода тест 1 для тест 2, баг в проге, переписал все тоже от руки все работает. Моно тупит

  • @59ganksta
    @59ganksta Před 6 lety +1

    Люди добрые помогите мне с отступами пожалуйста не могу я уже мучаюсь только...когда допустим делаю Ctrl+C и Ctrl+V т.е. копировать и вставить в коде любую строчку ,то он вставляет не в то место после которого нажал Enter, а в самую левую часть...я уже не могу как настроить помогите!

  • @klirik7873
    @klirik7873 Před 6 lety +3

    Что за логика? Объясняешь что такое интерфейс, но не объяснешь что такое массивы и для чего они нужны.

    • @wh1tey4rik32
      @wh1tey4rik32 Před 6 lety +7

      что за логика? ты смотришь 22 урок, но не смотрел уроки, которые были раньше?

  • @alexsindre2426
    @alexsindre2426 Před 4 lety

    чуть не поперхнулся рекламой, которой тут ну просто дофигища.

  • @geek__3743
    @geek__3743 Před 7 lety +1

    Интерфейсы не наследуют, а реализуют. И ещё, Гоша пиши открывающею операторную скобку с новой строки, а в остальном норм.

  • @sonar_devices
    @sonar_devices Před 7 lety +1

    Тут же вроде множественная реализация интерфейсов и наследование их же. Тема множественного наследования классов не раскрыта.

    • @roman1324
      @roman1324 Před 6 lety +4

      Множественного наследования нет в С# , он несет пургу.

  • @algrensan473
    @algrensan473 Před 3 lety

    9:40 сначала подумал что это мой живот был, однако...

  • @MaikasBaset
    @MaikasBaset Před 7 lety +26

    Мммда, с 19-й части, ты все просто показываешь, что-то рассказываешь, но ни хрена не понятно, адекватных примеров, НЕТ.

    • @delalen8012
      @delalen8012 Před 7 lety +2

      надоело ему видимо уже это

    • @user-uq6pp8mj2m
      @user-uq6pp8mj2m Před 6 lety +3

      На самом деле все офигенно понятно,надо просто параллельно изучать шарп по книге ,я не понял интерфейсы в книге ,прочитал их тут ,и сейчас все классно

    • @user-uq6pp8mj2m
      @user-uq6pp8mj2m Před 6 lety +1

      Посмотрел *

    • @woooow43
      @woooow43 Před 6 lety +7

      Конечно в книге понятней когда не путают читателя называя объект класса классом и приводят не придуманные на ходу примеры. С терминологией в шарпе у меня вообще проблемы. По пять раз перечитываешь пока поймешь.

  • @goggle3454
    @goggle3454 Před 4 lety

    Множественное наследие, дочерний с ударением на о...

  • @aysommer
    @aysommer Před 8 lety +3

    Слишам многа урокаф за день

    • @klirik7873
      @klirik7873 Před 6 lety +1

      Видимо ты и являешься эдаким школьником. Раз так агриссивно ведешь себя на стеб

    • @wh1tey4rik32
      @wh1tey4rik32 Před 6 lety

      еще и цензурит мат................... просто фейспалм

  • @pefren777
    @pefren777 Před 6 lety

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

    • @dimashewa9476
      @dimashewa9476 Před 6 lety

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

  • @user-py7qm5zx5j
    @user-py7qm5zx5j Před 5 lety

    Столько отличных уроков и НА! тупой пересказ книги, я тоже самое могу прочитать, зачем на сказку время тратить. Где примеры, где примеры разницы с\без

  • @mr.tacker3583
    @mr.tacker3583 Před 6 lety

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

    • @index0h
      @index0h Před 5 lety +1

      Тот момент, когда не понимаешь разницу между наследованием и имплементацией))

  • @user-cu7sp1lj6q
    @user-cu7sp1lj6q Před 4 lety

    Судя, по каментам , урок нет смысла смотреть...

    • @OpalGooDog
      @OpalGooDog Před 4 lety

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

  • @YashchiK
    @YashchiK Před 5 lety +1

    нихера не понял. Очень сомнительное объяснение надобности использования

  • @Gaploman85
    @Gaploman85 Před 6 lety +1

    Туфталогия какая то, зачем это все и что с этим делать абсолютно не понятно.