На этом занятии мы узнаем, что такое интерфейс (interface) в языке программирования C#, научимся их реализовывать (имплементировать) явно и неявно. Узнаем основные отличия интерфейсов и абстрактных классов.
@HeIvis2 жыл бұрын
CODE BLOG, не подскажешь. Удобно ли будет на ноутбуке маке разрабатывать под виндовс?
@melkey_poc6 ай бұрын
Прошло 5 лет, кое что поменялось и в мире и в самом c#, но видео все еще актуально и полезно. Спасибо автору огромное!
@ВсеволодЗорин-л6н6 жыл бұрын
Благодарю. Помогло заполнить некие пробелы.
@OnikMod4 жыл бұрын
Очень круто. Большое спасибо. После двух предыдущих тем эта зашла как по маслу)))
@victordar70665 жыл бұрын
Спасибо за уроки. Они великолепны =)
@CODEBLOG5 жыл бұрын
Всегда пожалуйста )
@РайМахровский2 жыл бұрын
Мега полезный видеоурок, всё очень понятно, спасибо!
@dizzyark92215 жыл бұрын
Вадим просто шикарное пояснение многие вещи стали понятны. Есть вопрос за видимость классов, переменных. Абсолютно понятен принцип считать всех идиотами, но при этом все те же переменные мы же прописываем сами. У пользователя нет доступа к переменным и нет возможности запросить что то публичное если мы это не указывали. Что то этот момент для чего используются приватные вещи я не понимаю. Не затруднит Вас просветить этот момент
@NeizBest4 жыл бұрын
Для удобства написания кода в том числе. Если какая-то переменная доступна, её можно будет выбрать в выпадающем списке. Когда у тебя будет большой проект с большим количеством кода - не мудрено будет что-то перепутать. Может ещё какие-то причины есть, но тут я не знаю, сам новичок)
@dizzyark92214 жыл бұрын
@@NeizBest удобство в работе понятно но здесь идёт вопрос безопасности а вот здесь я как раз и не понимаю
@GenkaKorobkin4 жыл бұрын
Отличные уроки, большое спасибо за ваш труд!
@phat804 жыл бұрын
Ну не знаю, чел часто путает понятия. Даже когда вроде сначала говорит правильно, что например, интерфейсы не наследуются. Далее сам начинает говорить, что тот или иной класс наследуется от интерфейса. Список называет массивом, хотя это совершенно разные понятия. В общем, считаю, что если берешься учить, будь добр, знай предмет на 5 с плюсом. А так получается каждый второй разработчик уже учить лезет, хотя у самого знания далеко не идеальные. Поэтому они только путают тех, кто пытается учить. Потом у людей вопросы, а почему их завалили на собеседовании, ведь они честно отсмотрели тот или иной курс и все запомнили. А оказывается, что большинство курсов записывают вообще не профессионалы, а те, кто сам только вчера тему изучил. Даже какая-то оговорка может отложиться в голове ученика, поэтому надо следить, чтобы даже оговорок никаких не было. Ну или хотя бы делать пометки в видео потом, как делают те, кто все-таки чувствует какую-то ответственность.
@cartoonshow2724 жыл бұрын
Как всегда отличный урок. Спасибо огромное за уроки!
@Flett-t7u Жыл бұрын
Спасибо вам за ваши уроки
@ВалерийВаланчус4 жыл бұрын
Этот ролик у вас получился лучше и проще чем CLR via C# глава 13 .
@CODEBLOG4 жыл бұрын
так в том и смысл, что этот ролик для начинающих, а clr via c# более сложный )
@ВалерийВаланчус4 жыл бұрын
Вчера я уснул на этом ролике , когда проснулся он еще шел и шел . Я интелектуальнно буксую от таково объема информации .
@TheKovalAndrey2 жыл бұрын
@@ВалерийВаланчус я тоже уснул и во сне изучил exception, delegate
@vusalaliyev99552 жыл бұрын
Красавчик других слов нет
@pssp44504 жыл бұрын
Вопрос по наследованию и реализации интерфейсов 25:19 как я понял это наследование интерфейса, верно? 32:10 а тут реализация? из-за того что класс "наследует" более одного интерфейса это называется реализацией? или же наследование и реализация для интерфейса это одно и тоже? (суть не в сехе работы, а как что называют), а когда интерфейсов больше одного то это уже множественное реализация?
@abdusamadjuraev26154 жыл бұрын
да более 2 наследований называется реализацией!!
@CODEBLOG4 жыл бұрын
На самом деле здесь просто не совсем правильно говорить про наследование интерфейсов. Наследование подразумевает, что ты получаешь логику из предка, а интерфейс не содержит логики. Поэтому корректнее говорить про реализацию интерфейса. Когда ты реализуешь интерфейс ты всего лишь говоришь, что в классе есть такие же члены, как объявленные в интерфейсе. но напрямую интерфейс и класс его реализующий не связаны, интерфейс не передает в класс логику
@ВалерийВаланчус4 жыл бұрын
За болванку вам отдельное спасибо .
@eugenekrutoy14754 жыл бұрын
Большое спасибо! Огромное просто!
@NeizBest4 жыл бұрын
26:15... Каким сочетанием клавиш это было сделано? (Автоматическая реализация интерфейса в классе) Или это чисто фишка VS, которую в других средах не найти? ПС, спасибо за урок, всё было неплохо) На этот раз было проще уловить, а точнее, здесь мало элементов C# затронуто, и незнакомых лично для меня вообще не было.
@yanas22262 жыл бұрын
2 года прошло, узнал ответ на свой вопрос?
@TheFryOS5 жыл бұрын
в 5:27 начало. Автору Спасибо.
@CODEBLOG5 жыл бұрын
Всегда пожалуйста )
@evgeniyt.2858 Жыл бұрын
Можно представить интерфейс как некий контракт который обязаны исполнить все наследующие этот интерфейс классы. И этот же контракт будут использовать клиенты (имеется в виду, например, другие классы) при работе с этим классом.
@ВалерийВаланчус4 жыл бұрын
В интерфейс можно как-нибудь поместить в объект управления со свойствам второй формы чтобы к нему получить доступ из первой формы или нет ?
@CODEBLOG4 жыл бұрын
можно связать формы через события или можно создать коллекцию форм и обращаться из одной в другую
@ВалерийВаланчус4 жыл бұрын
Менять только свойства второй формы из первой через ее объект можно легко поменять его в событии - одним кликом очень легко . А менять свойства объектов которые находятся на второй форме - трудно , они недоступны из первой формы .
@ВалерийВаланчус4 жыл бұрын
Если два одинаковых свойства связанные одним интерфейсом разных классов , то получив значения первое свойства передаст это значение во второй класс на второе свойства ? У интерфейсов есть объекты ? Я их только-только учу .
@MikhailPavliuchkov4 жыл бұрын
24:55 //// //// Выполнить перемещение. //// //// Расстояние. //// Время движения. Что это?
@f0xeri4 жыл бұрын
комментарий
@NadolskyiDeniS4 жыл бұрын
Комментарий - полное описание метода
@Venustaz3 жыл бұрын
К комментаторам выше. Данная схема, т.е. полное описание метода (или другого), будет так же формировать всплывающую подсказку в VS, если ты где-то захочешь вызвать этот метод. Это особенно заметно при использовании методов стандартной библиотеки, только начинаешь писать, а там уже написана подсказка, что метод делает, какие параметры что обозначают.
@ВалерийВаланчус4 жыл бұрын
Имплементация метода и его интерфейса похожа на простое описание метода этот метод будет и так доступен без интерфейса из объекта этого класса не понимаю в чем здесь фишка ? Может этот метод реализуется водном классе , доступен будет где наследуется этот интерфейс пусть из пустого класса ?
@CODEBLOG4 жыл бұрын
фишка в полиморфизме. Следующий ролик будет как раз с демонстрацией практического применения интерфейсов
@ВалерийВаланчус4 жыл бұрын
Жду с нетерпением . Тупо переписал ваш этот проект из этого ролика сейчас пытаюсь понять принцип работы интерфейса . У вас ролики избыточно длинные трудно перекопировать проект , но все-таки интересно .
@I-PixALbI4-I4 жыл бұрын
Надо бы обновить информацию, интерфейсы теперь поддерживают реализацию )
@ivanomelchenko19953 жыл бұрын
спасибо за стримм
@JointJaBa4 жыл бұрын
Вопрос, можно ли (а если можно, то как) у свойств интерфейса и у классов, которые унаследовали этот интерфейс, быть разные уровни доступа, например у интерфейса есть свойство T, а у класса наследника будет свойство protected T?
@Shikinev_24 жыл бұрын
17:24 C версии c# 8 можно задавать модификаторы доступа перед методом
@phat804 жыл бұрын
Это видео записано до выхода версии 8, неужели вы этого не видите?
@vladportnov30413 жыл бұрын
@@phat80 человек просто проинформировал, в чем проблема?
@ВалерийВаланчус4 жыл бұрын
Как вообще осуществляется спонсирование ? Я нажимаю кнопку "Спонсировать" . Деньги откуда снимаются с какого счета ? Наверно с того , куда я плачу за доступ в интернет через платежное агентство ? И как потом прервать перечисления ? Дайте подробную инструктцию . Может один-два месяца можно проспонсировать .
@CODEBLOG4 жыл бұрын
По идее при первом платеже у тебя должно попросить ввести данные карты. потом каждый месяц будет списываться сумма. Отказаться можно в любой момент в профиле KZbin. Там должна быть кнопка что-то вроде "покупки и спонсорство". Там полный список всех спонсируемых каналов и способ оплаты. можно отключиться там
@jeb_77494 жыл бұрын
54:30 А что мешает так же сделать с классами?
@vanya218265 жыл бұрын
Домашнее задание:ОТВЕТ: 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() { } }
@sashkosashok5 жыл бұрын
Нормально, где-то тут я остановился в прошлый раз.
@CODEBLOG5 жыл бұрын
Успехов в продолжении изучения )
@Venustaz3 жыл бұрын
После вопроса об одновременном наследовании класса и реализации интерфейса (или интерфейсов) возник вопрос: Что если в классе-родителе, каким-то магическим образом содержится метод, идентичный по сигнатуре методу, определенному в интерфейсе, но при этом класс-родитель, не реализует интерфейс (который нужно реализовать в классе-наследнике). А что если класс родитель реализует интерфейс, который так-же необходимо реализовать классом-наследником.
@Ислам-э9х3х3 жыл бұрын
это несложно проверить, но кажется что все должно быть ок, в классе наследнике же реализуется метод для интерфейса через наследование
@Баюн_____________1234 жыл бұрын
Вместо интерфейса можно использовать абстрактный класс?
@CODEBLOG4 жыл бұрын
Можно, но не всегда это разумно
@stan52145 жыл бұрын
Для наглядности можно реализовать интерфейсы IRace и IDecay. Первый для лады, 2й для БМВ :-P
@CODEBLOG5 жыл бұрын
Ты что, тебя любители Приор загрызут )))
@vladoss46432 жыл бұрын
Вопрос. А зачем тогда нужны абстрактные классы, если мы все можем через интерфейсы реализовать?
@BrownAleks Жыл бұрын
Если есть какие либо реализации или поля в интерфейсе, то все они в производных классах будут статичные. А реализации и поля унаследованные от абстрактных классов, для каждого производного экземпляра будет своя версия состояния.
@АртемНиколаевич-о7п Жыл бұрын
Разные смысловые функции. На один класс можно кинуть несколько интерфейсов.
@paveldukov6 жыл бұрын
большое спасибо
@andreyvolkov31174 жыл бұрын
1:02:00 (или как-то так) А в С++ есть же abstract и virtual, который по сути делает множественное наследование классов удобнее, ведь не нужно разделять на классы и интерфейсы, можно просто фигачить. (если я правильно помню)
@processing17 Жыл бұрын
Это и в с# тоже есть вроде
@dmytropetkevych85884 жыл бұрын
У меня при неявной реализации Move() выдает ошибку и просит явную реализацию для каждого интерфейса
@imbackinussr899110 ай бұрын
А как сделать так, чтобы сразу в Solution Explorer показывал ошибку, в смысле подчеркивалось красным. Кто знает, ответьте пожалуйста
@mikeistp57365 жыл бұрын
Вот тут ещё есть хорошее пояснение этой же темы, если кому ещё не понятно: kzbin.info/www/bejne/fILJYmehn517rbc А так то зачёт автору! столько всего и на халяву рассказывает.