Наследование интерфейсов C# | множественное наследование интерфейсов | C# ООП | # 78

  Рет қаралды 45,734

#SimpleCode

#SimpleCode

Күн бұрын

Пікірлер: 107
@SimpleCodeIT
@SimpleCodeIT 3 жыл бұрын
Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =) ✅Доступ к исходному коду и спонсорство www.patreon.com/SimpleCode ✅ donatepay.ru/don/SimpleCode ✅BTC кошелек: 12oYfJnvt76wjJbpvfhM41m6KPz6uz4LD4
@nargavas8836
@nargavas8836 3 жыл бұрын
А можно уроки по Windows Forms пожалуйста?
@vadimpetrov8451
@vadimpetrov8451 3 жыл бұрын
с нетерпением ждём следующего урока .
@777noob777saibot
@777noob777saibot 3 жыл бұрын
В данном случае можно обойтись абстрактными классами и при этом ещё будет доступен метод ShowInfo , который был ранее. Если так, то где вообще нужны эти интерфейсы? using System; abstract class Weapon { public abstract int Damage { get; } public abstract void Fire(); public void ShowInfo() { Console.WriteLine($"{GetType().Name} Damage {Damage} "); } } abstract class Cold_Weapons : Weapon { public abstract void Throw(); } class Gun : Weapon { public override int Damage { get { return 5; } } public override void Fire() { Console.WriteLine($"{GetType().Name} ; Пых"); } } class Automat : Weapon { public override int Damage { get { return 7; } } public override void Fire() { Console.WriteLine($"{GetType().Name} ; Тын,Тын,Тын"); } } class Laser : Weapon { public override int Damage { get { return 5; } } public override void Fire() { Console.WriteLine($"{GetType().Name} ; Пиу"); } } class Bazuca : Weapon { public override int Damage { get { return 10; } } public override void Fire() { Console.WriteLine($"{GetType().Name} ; Вууухх"); } } class Knife : Cold_Weapons { public override int Damage { get { return 3; } } public override void Fire() { Console.WriteLine($"{GetType().Name} ; Удар ножом "); } public override void Throw() { Console.WriteLine($"{GetType().Name} ; Нож брошен"); } } class Player { public void Fire(Weapon weapon) { weapon.Fire(); } public void Throw(Cold_Weapons weapon) { weapon.Throw(); } public void CheckInfo(Weapon weapon) { weapon.ShowInfo(); } } class Program { static void Main() { Player player = new Player(); Laser laser = new Laser(); player.Fire(laser); player.Fire(new Knife()); Console.WriteLine(); Weapon[] inventary = { new Gun(), new Automat(), new Laser(), new Knife() }; foreach (var item in inventary) { player.Fire(item); player.CheckInfo(item); } Console.WriteLine(); Knife knife = new Knife(); knife.Throw(); player.Throw(knife); } }
@АлександрНеживой-х3щ
@АлександрНеживой-х3щ Жыл бұрын
@@777noob777saibot Множественное наследование - вот преимущество интерфейсов перед абстрактными классами. С помощью этого можно расширять функционал, не ломаю логику и архитектуру приложения
@Vlaska_1
@Vlaska_1 Ай бұрын
ну вот этот урок намного проще было понять чем прошлый. Сергей спасибо за то что сделали этот курс, благодаря вам я теперь могу переходить на новый уровень и начать изучать фреймворки(но курс все равно досмотрю)!!! Обещаю вам что когда я устроюсь джуном на работу то скину вам n% о своей з/п с качестве благодарности)))
@integer_dev
@integer_dev 3 жыл бұрын
Сразу лайк! Грех не поддерживать такой хороший курс! надеюсь в скором времени мы доберемся и до событий, делегатов, лямбд, символов удаления, переопределение арифметических операторов, обобщению (generics), к неуправляемым обьектам и до многого другого добра в c# 😎👊👍
@sergeynovikov7049
@sergeynovikov7049 3 жыл бұрын
Говорят, лучше чуть-чуть (пару минут) выждать, иначе не учитываются лайки и комменты при монетизации.
@PostnikovSergeyAlex
@PostnikovSergeyAlex 3 жыл бұрын
Отличная идея, объяснение на примере создания игры, идеально усваивается! Спасибо Вам, Сергей, никакие курсы не сравнятся с Вашим талантом объяснять и подбирать материал, ещё раз Спасибо!
@cyberwarlus2758
@cyberwarlus2758 3 жыл бұрын
Спасибо за ваш труд! Сергей
@integer_dev
@integer_dev 3 жыл бұрын
ура, новый урок! + к мотивации стать c# программистом
@artlinestudio6735
@artlinestudio6735 3 жыл бұрын
Отличный урок! В прошлом ничего не понял ). В этом понял все и за тот и за этот уроки! Спасибо Сергей!
@ВиталийКирия
@ВиталийКирия 3 жыл бұрын
Сергей огромная вам благодарность за уроки! Вы большой молодец!
@carservice3076
@carservice3076 3 жыл бұрын
знаешь в чём минус твоих уроков?......они слишком классные, крутые. Ладно, это шутка, но на самом деле они просто супер! И ведь запарился и снимаешь такие уроки. Я к чему, просто есть другие люди и они тоже делают уроки, но посмотришь их и программирование изучать перехочется . А у тебя так всё разложено и разжевано, проще некуда. Спасибо за твои классные уроки!
@ShomLZ
@ShomLZ 3 жыл бұрын
Уже далеко вперёд убежал в обучении, но все равно смотрю Сергея, для закрепления материала. Спасибо за урок!
@blackcreeper5314
@blackcreeper5314 3 жыл бұрын
А где изучали?
@ShomLZ
@ShomLZ 3 жыл бұрын
@@blackcreeper5314 metanit и книжки читаю (Сергей давал список в видео) + задачи на codeward
@mikola_ua7050
@mikola_ua7050 3 жыл бұрын
Сделайте, пожалуйста, урок по работе с GitHub в VisualStudio как сохранять, загружать проект и т.д. очень интересно
@_chill_relax_calm4647
@_chill_relax_calm4647 3 жыл бұрын
Поддерживающий комментарий для дальнейшего развития канала. Вы чрезвычайно понятно все объясняете
@maxwad
@maxwad 3 жыл бұрын
Сергей, огромное спасибо за уроки. Главное - не останавливайся.)
@vadimpetrov8451
@vadimpetrov8451 3 жыл бұрын
огромное Вам спасибо за отличные уроки. всегда с удовольствием смотрю !.🚁🚀
@adamadamesko9759
@adamadamesko9759 3 жыл бұрын
Я очень рад что урок мне понравился, спасибо!
@firemanhood1526
@firemanhood1526 3 жыл бұрын
Твои уроки дух захватывает))
@sergeynovikov7049
@sergeynovikov7049 3 жыл бұрын
Забываю иногда про понедельники, забот хватает и вдруг уведомление о новом выпуске!) И всё сразу играет красками!)
@farrukhyuldoshev8223
@farrukhyuldoshev8223 3 жыл бұрын
Ура)) долго ждал новый урок спасибо огромное.
@VADIM-SOLOV
@VADIM-SOLOV 3 жыл бұрын
Вау! Интерфейсы это очень крутая штука! Спасибо за урок :)
@onegarrisonmo6946
@onegarrisonmo6946 3 жыл бұрын
Здравствуйте Сергей, спасибо вам большое за ваши уроки🙏. Если получится снимите видеоурок для плейлиста { C# ПЛЮШКИ } на тему работа с Api в С#.📡
@sergeynovikov7049
@sergeynovikov7049 3 жыл бұрын
Поддерживаю просьбу!
@michaeltkachenko7313
@michaeltkachenko7313 3 жыл бұрын
Там ничего сложного нет, самому легко разобраться
@sergeynovikov7049
@sergeynovikov7049 3 жыл бұрын
@@michaeltkachenko7313 как и в любом вопросе. Но раз уж записывается цикл, тем более с таким грамотным объяснением, то неплохо было бы посмотреть урок и по этой теме. Спрос рождает предложение. Если Вы знаете ресурс, где можно ознакомиться с уроками по данной теме, то лучше сразу оставить ссылку на этот ресурс. А если нет, тогда будем надеяться, что Сергей запишет ролик по данной просьбе.
@egorkalmykov4003
@egorkalmykov4003 3 жыл бұрын
Спасибо большое за полезнейшие уроки !!!
@Vladlenka
@Vladlenka 3 жыл бұрын
-Видишь актив? -Нет -И я не вижу. А он есть
@DmitryDolganov
@DmitryDolganov 3 жыл бұрын
Сергей, благодарю!!!
@ifelru
@ifelru 3 жыл бұрын
Спасибо за полезный и отличный урок!
@Катерина-э4я
@Катерина-э4я 3 жыл бұрын
Круто! Спасибо большое!
@ninjadiestanding5082
@ninjadiestanding5082 3 жыл бұрын
Большое спасибо за урок!
@justcode5626
@justcode5626 3 жыл бұрын
Удачи вам и терпения в обучении искусства программирования!
@3x__
@3x__ 3 жыл бұрын
спасибо за урок
@ПавелБойко-ь2д
@ПавелБойко-ь2д 3 жыл бұрын
Хороший урок , зашел на ура!) спасибо!)
@ЕвгенийКадочников-с1ы
@ЕвгенийКадочников-с1ы Жыл бұрын
Автор, СПАСИБО! Даже мне понятно
@____-fh4wx
@____-fh4wx 3 жыл бұрын
какой прелестный урок😊
@Antonov_Ivan.
@Antonov_Ivan. 4 ай бұрын
Спасибо за урок!
@alexanderdementjev5867
@alexanderdementjev5867 3 жыл бұрын
Спасибо. Очень всё доходчиво.
@vladoss4643
@vladoss4643 Жыл бұрын
Вопрос!! Для данной задачи правильнее было бы реализовывать такую схему взаимодействия интерфейсов, при которой они бы друг от друга не зависели. Ведь в будующем может быть добавлено такое оружие, как сюрикены, например. Из которых нельзя стрелять, но которые можно кидать. И тогда лучше было бы не делать один интерфейс наследуемым от другого, а сделать класс Knife, реализующий два независимых интерфейса. И это бы рвботало также в текущей ситуации, но имело бы правильную систему развития в будущем. Так что до чих пор непонятно, в каком случае стоит использовать наследуемые интерфейсы))
@ДенисВербіцький-ц8ц
@ДенисВербіцький-ц8ц Жыл бұрын
После просмотра ролика, тот же вопрос возник. Думаю пойду в коменты напишу такую же мысль. Но наткнулся на ваш коммент...смысла повторятся нету. Тоже не понял какая суть наследования интерфейса от интрфейса. Возможность есть лимит количества интерфейсов которые клас может имплемнтировать, тогда в этом есть смысл...а так :/
@vladoss4643
@vladoss4643 Жыл бұрын
@@ДенисВербіцький-ц8ц ну. Какой смысл я нашёл теперь. Наследование интерфейсов коллекций. В с# есть куча вариантов: IList, ICollection, IEnumerable, IEnumerable и тд... И, как я понимаю, как-то там всё это хитро завязано. Различные комбинации этих интерфейсов оказываются разными коллекциями, типо List, Array, ArrayList и далее. Возможно, там ответ)
@Neroz49rujka
@Neroz49rujka 3 жыл бұрын
ochen` horosho ! big up!
@tesarotawer4390
@tesarotawer4390 3 жыл бұрын
Оп, еще одно крутое начало недели!
@sergeykail6132
@sergeykail6132 3 жыл бұрын
Класс. понятно и четко
@ДмитрийАлексеев-ж1г
@ДмитрийАлексеев-ж1г 3 жыл бұрын
Сергей, я тебя благодарю!
@blackcreeper5314
@blackcreeper5314 3 жыл бұрын
Спасибо большое
@W_O_I_F
@W_O_I_F 3 ай бұрын
2024 август начинаю писать код заранее не дослушав автора - ИДЕ сама все подставляет. У меня такое подозрение что Вижла смотрит этот курс)))
@blackgolddev4023
@blackgolddev4023 3 жыл бұрын
Шикарно)))) я ждал этого урока))))
@shomagasanov8106
@shomagasanov8106 3 жыл бұрын
спасибо огромное за уроки) особенно за "Фьють")))) орал))
@steb1hp
@steb1hp 3 жыл бұрын
Здравствуйте Сергей у меня к вам вопрос вы в одном своем видео рассказываете про книги С# так вот как вы считаете стоит ли брать книги для новичков если уже имеется некое понимание языка в рамках просмотра вашего курса?
@ivannebyshynets8829
@ivannebyshynets8829 3 жыл бұрын
Awesome!
@ОлександрСатанівський-п3в
@ОлександрСатанівський-п3в 2 жыл бұрын
В этом уроке мы обсудим тему наследования интерф
@redtred7704
@redtred7704 3 жыл бұрын
Спасибо за урок! Сергей, скажите, появятся ли в ближайшем будущем домашние задания?
@energy6247
@energy6247 3 жыл бұрын
Thank you)
@ИванДраго-о1щ
@ИванДраго-о1щ 2 жыл бұрын
Хыщ и Фьють это пять !)
@Banzaaaa
@Banzaaaa 3 жыл бұрын
Очень круто, а главное доступным языком. У меня тут много вопросов сразу. Я так понимаю что последние уроки сделаны на основе паттернов. Есть возможность озвучить их, описать или это предмет следующих лекций? И парадокс, у нас возможно оружие котороe не содержит метода Fire() (Огонь для ножа уже звучит странно). Т.е. нам нужен родительский интерфейс, желательно пустой без деклараций вовсе. Для того что бы при появлении нового оружия не тащить возможно избыточный контракт. Но при этом экземпляры должны наследоваться от него (Архи интерфейса) для контроля входных данных. Такие пустые интерфейсы возможны или это нарушает принципы ООП?
@funny_nuts
@funny_nuts 3 жыл бұрын
Ну назови метод не Fire(), а Attack() например если смущает выстрел ножом. Это всего лишь название метода, который скрыт для конечного пользователя. Да и логику к примеру для гранат, проще реализовать через готовый метод , тк по сути бросок гранаты - это такое же действие как и выстрел (атака), а как оно будет реализовано зависит от конкретного типа оружия.
@Banzaaaa
@Banzaaaa 3 жыл бұрын
Andrew Olsen О это очень простой вопрос. А твой ответ очень сильно уводит в сторону от действительной проблематики ООП и решений с помощью интерфейсов. Вместо более строгой классификации и решений в рамках глубокой архитектуры и гибкости управления через интерфейсы. Ты предлагаешь ситуативный расширяющий костыль. А что если наше оружие не производит атаку а? Например создаёт защиту или лечит или это РЛС или РЭБ. Тогда нам понадобится метод Action() или DoSome() ну что бы вместить все логические понятия. Ой подожди это тоже не походит, ведь наше оружие может вовсе не совершать каких-либо действий. Например просто давать +15hp или создавать ауру и прочее прочее. В моем вопросе уже есть ответы.
@funny_nuts
@funny_nuts 3 жыл бұрын
​@@Banzaaaa лол што? Оружие которое не производит атаку и лечит?? Я бы охренел если бы в ААА шутере я кинул гранату в толпу врагов, а она бы их всех вылечила ))) Ты вообще в курсе что такое оружие? Или в гугле забанили? Оружие в принципе придумано для того чтобы наносить повреждения. Это свойство присутствует у ЛЮБОГО оружия ДАЖЕ когда оно сломано или разряжено.. И неважно какого типа урон оно наносит, физический, магический или даже ментальный, на то оно Б**ТЬ и оружие!!! РЛС это вообще гребаный радар весом в ТОННУ минимум!!! Как ты его в инвентарь поместишь???? РЭБ вообще это не предмет даже. Просто фейспалм на всё лицо...
@fsewcdv
@fsewcdv 3 жыл бұрын
примеры супер
@АнонимМ-н2г
@АнонимМ-н2г 3 жыл бұрын
Как всегда топово!
@meelstorm90
@meelstorm90 3 жыл бұрын
Спасибо большое!
@АндрейВсе-е6т
@АндрейВсе-е6т 3 жыл бұрын
Здравствуйте! Подскажите пожалуйста: по первому видео "плюшки с#" хотел создать библиотеку классов, но у меня нет шаблона class library. Как подключить шаблон или чем заменить его? Visual Studio 2019
@ruslanelzhirkaev3538
@ruslanelzhirkaev3538 3 жыл бұрын
Братишка ты лучший
@oiei2767
@oiei2767 3 жыл бұрын
спасибо
@Grapeoff
@Grapeoff 3 жыл бұрын
Спасибо!
@Pptshnica
@Pptshnica 3 жыл бұрын
Сергей, а ты даешь индивидуальные занятия, если есть конкретные запросы и сколько это стоит?
@mvzex
@mvzex 3 жыл бұрын
Сколько примерно уроков до конца курса осталось?
@БогданШилов-ж3ч
@БогданШилов-ж3ч 3 жыл бұрын
Учитывая,что курс по с++ был на более,чем 200 уроков,а этот курс планируется больше,то будет ещё 100-150 уроков. Наверное.... Надеюсь.
@Vr1cK-d2l
@Vr1cK-d2l Жыл бұрын
@@БогданШилов-ж3ч не повезло
@ВасилийПудов-в7д
@ВасилийПудов-в7д 3 жыл бұрын
Привет. А плюшки новичкам пока стоит смотреть или лучше сначала пройти курс?
@donlinoleum831
@donlinoleum831 3 жыл бұрын
Друзья, я верно понял основной посыл, что главное отличие абстрактного класса, с абстрактными методами в нем, от интерфейса это именно возможность множественного наследования у интерфейсов? А за видос большое спасибо)
@Banzaaaa
@Banzaaaa 3 жыл бұрын
Да но немножко сложнее. У ExtrimeCode есть ролик на тему проблематики ООП. Если вкратце Интерфейсы позволяют создать наследование не в контексте глубокой иерархии, а как бы сбоку. Т.е. только те наследники которые должны реализовывать что-то без привязки к иерархии. И в этом смысле методы по умолчанию для интерфейсов хоть и нарушают парадигму, но дают широкий инструментарий программисту.
@makasin2393
@makasin2393 3 жыл бұрын
Пушка : )
@mayakovsky810
@mayakovsky810 2 жыл бұрын
Сделайте ролик по виртуальным классам пожалуйста. Очень интересно
@ЕвгенийЕмельянов-п2ы
@ЕвгенийЕмельянов-п2ы 9 ай бұрын
я посмотрел. все ок
@pavelkross
@pavelkross 3 жыл бұрын
спасибо. очень жду wpf
@хыых-м2т
@хыых-м2т 3 жыл бұрын
Здравствуйте Сергей, у меня вопрос. Можно как то программу написать в кейсы?
@Дебошир-е2ч
@Дебошир-е2ч 3 жыл бұрын
Какой шрифт вы используете?
@romant2394
@romant2394 2 жыл бұрын
Дякую за урок! Є два запитання: 1) Як у вас ситуація, всі цілі, все гаразд із близькими та рідними? 2) Чи є якийсь сенс реалізовувати для ножа логіку Fire, якщо він ніколи не буде її використовувати. Тобто, чи є інша опція поєднати IWeapon і IThrowingWeapon, при цьому уникнути написання зайвої додаткової логіки яка займає місце і (напевно) дає більше навантаження на систему? Знову ж таки, який сенс робити реалізацію методу Fire який, за вашими словами, може займати багато рядків коду та виконувати особливу логіку при тому, що він ніколи не буде використаний. Як обійти цю ситуацію? Чекаємо на нові відео та пояснення, дуже вдячний за вашу працю. Вивчуся і почну заробляти, я - ваш постійний патрон
@valentyn4367
@valentyn4367 2 жыл бұрын
А коли вийдуть нові уроки?
@ВалентинГандрибіда2пі-23б
@ВалентинГандрибіда2пі-23б 2 жыл бұрын
зроби будь ласка урок про ключове слово yield
@КириллСилин-п4т
@КириллСилин-п4т 3 жыл бұрын
коммент для продвижения
@ignisfeuer
@ignisfeuer 3 жыл бұрын
желательно от пяти слов комменты делать для этого.
@shlopaiushiy-po-popke
@shlopaiushiy-po-popke 3 жыл бұрын
я свечку поставлю за развитие канала
@Mr.ESCANOR.
@Mr.ESCANOR. 3 жыл бұрын
ЗДРАСТВУЙТЕ подскажите на кого сейчас актуально отучиться и реально после обучения трудоустроиться??? И где учиться 1.Гик Брейнс 2.Яндекс практикум 3. Скилбокс Или же есть чтото иное где можно получить достойное образование в сфере програмирования и работать обеспечивая семью??????7 Буду рад помощи не равнодушных Всем спасибо за ответы.
@madmax6476
@madmax6476 3 жыл бұрын
Меня тоже интересует данный вопрос, будем ждать, может кто-нибудь и ответит
@hutoryanin
@hutoryanin 3 жыл бұрын
*Л. а. й. к.*
@gopnikkasarj6797
@gopnikkasarj6797 7 ай бұрын
я вот не понимаю, интерфейсы, как я понял, должны обосновывать всё и вся, например такие как поверхность любого объекта, а тут конкретный класс, так тоже можно что ли?
@yomi_yori
@yomi_yori 12 күн бұрын
Я сам только обучился до этого видео и моих знаний не супер много, но могу объяснить так. Интерфейсы описывают общие характеристики и возможности довольно разных между собой объектов. Например мы описываем человека и машину. Это довольно разные объекты, но общее у них, это скорость. В данном видео, Сергей пытается донести до нас как работают интерфейсы и как их использовать. Но как по мне, РИСКНУ преположить, тут можно и СКОРЕЕ ВСЕГО нужно использовать абстрактный класс. Ваш вопрос был задан 6 месяцев назад, как проходит ваше обучение? Возможно вы уже знаете ответ на свой вопрос. Если я где-то не прав, то поправьте меня пожалуйста!
@gopnikkasarj6797
@gopnikkasarj6797 12 күн бұрын
@@yomi_yori да, уже немного прошаренный, абстрактный класс описывает сущность обьект, а конкретно поля класса и методы, а интерфейс лишь как метод, то есть он лишь нужен для реализации какого то функционала, а абстрактный класс сущность. Я хоть давно это проходил, надеюсь что правильно разъяснил, что да как.
@yomi_yori
@yomi_yori 11 күн бұрын
@@gopnikkasarj6797 спасибо большое, вы понятно объяснили!
@АнтонЕлумеев
@АнтонЕлумеев 3 жыл бұрын
Судя по количеству лайков в начале плейлиста и в конце, не все добрались до конца))))))
@Lukas13333
@Lukas13333 2 жыл бұрын
Это даёт мотивацию)
@bomb4ik
@bomb4ik 3 жыл бұрын
Можно ДЗ, пожалуйста. Спасибо😉
@viktarvarabei6079
@viktarvarabei6079 3 жыл бұрын
Сергей, вы где?(
@SimpleCodeIT
@SimpleCodeIT 3 жыл бұрын
Со следующего понедельника продолжим =)
@hutoryanin
@hutoryanin 3 жыл бұрын
"какой-то комментарий..."
@ВикторМарфин-к8ш
@ВикторМарфин-к8ш 3 жыл бұрын
+++
@BillGates-ry3dk
@BillGates-ry3dk 3 жыл бұрын
Весь мир Хыщ , а ты в нём Фьють.
Ouch.. 🤕⚽️
00:25
Celine Dept
Рет қаралды 28 МЛН
бабл ти гель для душа // Eva mash
01:00
EVA mash
Рет қаралды 3,4 МЛН
Family Love #funny #sigma
00:16
CRAZY GREAPA
Рет қаралды 14 МЛН
Sigma baby, you've conquered soap! 😲😮‍💨 LeoNata family #shorts
00:37
Просто о ООП (Парадигмы ООП)
21:14
webDev
Рет қаралды 43 М.
Интерфейсы на практике
7:34
ExtremeCode
Рет қаралды 180 М.
C# programming. Lesson 4. Inheritance and polymorphism
18:12
Программирование - это просто
Рет қаралды 59 М.
C# programming. Lesson 6. Interfaces
24:32
Программирование - это просто
Рет қаралды 91 М.
Ouch.. 🤕⚽️
00:25
Celine Dept
Рет қаралды 28 МЛН