Тёмный

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

#SimpleCode
Подписаться 367 тыс.
Просмотров 43 тыс.
50% 1

В этом уроке мы обсудим тему наследования интерфейсов в языке программирования C# (не путать с реализацией интерфейсов), а так же выясним как работает множественное наследование интерфейсов в C# и рассмотрим пример применения наследования интерфейсов в языке программирования си шарп.
✅ ИСХОДНЫЙ КОД / iskhodnyi-kod-k-50486542
🔹 Telegram канал t.me/SergeySimpleCode
🔹 Наша группа ВК smplcode
✅ Доступ к исходному коду и спонсорство / simplecode
✅ donatepay.ru/don/SimpleCode
✅ BTC кошелек: 12oYfJnvt76wjJbpvfhM41m6KPz6uz4LD4
✅ Подписывайтесь на канал / @simplecodeit
🔹 ВСЕ УРОКИ| C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ • C# ОТ НОВИЧКА К ПРОФЕС...
🔹 Наследование в C# | Что такое наследование в ооп | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | # 71 • Наследование в C# | Чт...
00:00 ► что будет в уроке
00:40 ► что наследование такое наследование интерфейсов C#
02:37 ► множественное наследование интерфейсов C#
04:14 ► пример наследование интерфейсов в сишарп
#сишарп #simplecode #урокипрограммирования

Опубликовано:

 

4 июн 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 103   
@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); } }
@user-ls7xp9ng6b
@user-ls7xp9ng6b 10 месяцев назад
@@777noob777saibot Множественное наследование - вот преимущество интерфейсов перед абстрактными классами. С помощью этого можно расширять функционал, не ломаю логику и архитектуру приложения
@integer_dev
@integer_dev 3 года назад
Сразу лайк! Грех не поддерживать такой хороший курс! надеюсь в скором времени мы доберемся и до событий, делегатов, лямбд, символов удаления, переопределение арифметических операторов, обобщению (generics), к неуправляемым обьектам и до многого другого добра в c# 😎👊👍
@sergeynovikov7049
@sergeynovikov7049 3 года назад
Говорят, лучше чуть-чуть (пару минут) выждать, иначе не учитываются лайки и комменты при монетизации.
@PostnikovSergeyAlex
@PostnikovSergeyAlex 2 года назад
Отличная идея, объяснение на примере создания игры, идеально усваивается! Спасибо Вам, Сергей, никакие курсы не сравнятся с Вашим талантом объяснять и подбирать материал, ещё раз Спасибо!
@cyberwarlus2758
@cyberwarlus2758 3 года назад
Спасибо за ваш труд! Сергей
@integer_dev
@integer_dev 3 года назад
ура, новый урок! + к мотивации стать c# программистом
@carservice3076
@carservice3076 3 года назад
знаешь в чём минус твоих уроков?......они слишком классные, крутые. Ладно, это шутка, но на самом деле они просто супер! И ведь запарился и снимаешь такие уроки. Я к чему, просто есть другие люди и они тоже делают уроки, но посмотришь их и программирование изучать перехочется . А у тебя так всё разложено и разжевано, проще некуда. Спасибо за твои классные уроки!
@user-yc4yh5pe7d
@user-yc4yh5pe7d 3 года назад
Сергей огромная вам благодарность за уроки! Вы большой молодец!
@artlinestudio6735
@artlinestudio6735 2 года назад
Отличный урок! В прошлом ничего не понял ). В этом понял все и за тот и за этот уроки! Спасибо Сергей!
@mikola_ua7050
@mikola_ua7050 3 года назад
Сделайте, пожалуйста, урок по работе с GitHub в VisualStudio как сохранять, загружать проект и т.д. очень интересно
@ShomLZ
@ShomLZ 3 года назад
Уже далеко вперёд убежал в обучении, но все равно смотрю Сергея, для закрепления материала. Спасибо за урок!
@blackcreeper5314
@blackcreeper5314 3 года назад
А где изучали?
@ShomLZ
@ShomLZ 3 года назад
@@blackcreeper5314 metanit и книжки читаю (Сергей давал список в видео) + задачи на codeward
@Antonov_Ivan.
@Antonov_Ivan. День назад
Спасибо за урок!
@Vladlenka
@Vladlenka 3 года назад
-Видишь актив? -Нет -И я не вижу. А он есть
@firemanhood1526
@firemanhood1526 3 года назад
Твои уроки дух захватывает))
@sergeynovikov7049
@sergeynovikov7049 3 года назад
Забываю иногда про понедельники, забот хватает и вдруг уведомление о новом выпуске!) И всё сразу играет красками!)
@onegarrisonmo6946
@onegarrisonmo6946 3 года назад
Здравствуйте Сергей, спасибо вам большое за ваши уроки🙏. Если получится снимите видеоурок для плейлиста { C# ПЛЮШКИ } на тему работа с Api в С#.📡
@sergeynovikov7049
@sergeynovikov7049 3 года назад
Поддерживаю просьбу!
@michaeltkachenko7313
@michaeltkachenko7313 3 года назад
Там ничего сложного нет, самому легко разобраться
@sergeynovikov7049
@sergeynovikov7049 3 года назад
@@michaeltkachenko7313 как и в любом вопросе. Но раз уж записывается цикл, тем более с таким грамотным объяснением, то неплохо было бы посмотреть урок и по этой теме. Спрос рождает предложение. Если Вы знаете ресурс, где можно ознакомиться с уроками по данной теме, то лучше сразу оставить ссылку на этот ресурс. А если нет, тогда будем надеяться, что Сергей запишет ролик по данной просьбе.
@maxwad
@maxwad 3 года назад
Сергей, огромное спасибо за уроки. Главное - не останавливайся.)
@_chill_relax_calm4647
@_chill_relax_calm4647 2 года назад
Поддерживающий комментарий для дальнейшего развития канала. Вы чрезвычайно понятно все объясняете
@farrukhyuldoshev8223
@farrukhyuldoshev8223 3 года назад
Ура)) долго ждал новый урок спасибо огромное.
@adamadamesko9759
@adamadamesko9759 3 года назад
Я очень рад что урок мне понравился, спасибо!
@vadimpetrov8451
@vadimpetrov8451 3 года назад
огромное Вам спасибо за отличные уроки. всегда с удовольствием смотрю !.🚁🚀
@egorkalmykov4003
@egorkalmykov4003 3 года назад
Спасибо большое за полезнейшие уроки !!!
@user-lx5vv3uu8u
@user-lx5vv3uu8u 3 года назад
Сергей, благодарю!!!
@VADIM-SOLOV
@VADIM-SOLOV 2 года назад
Вау! Интерфейсы это очень крутая штука! Спасибо за урок :)
@user-gn3ei9ef2q
@user-gn3ei9ef2q 3 года назад
Круто! Спасибо большое!
@ifelru
@ifelru 2 года назад
Спасибо за полезный и отличный урок!
@ninjadiestanding5082
@ninjadiestanding5082 2 года назад
Большое спасибо за урок!
@justcode5626
@justcode5626 3 года назад
Удачи вам и терпения в обучении искусства программирования!
@user-kz4xm7zk5c
@user-kz4xm7zk5c 3 года назад
Сергей, я тебя благодарю!
@alexanderdementjev5867
@alexanderdementjev5867 3 года назад
Спасибо. Очень всё доходчиво.
@KlevaGameS
@KlevaGameS 6 месяцев назад
Благодарю за Урок.
@blackgolddev4023
@blackgolddev4023 3 года назад
Шикарно)))) я ждал этого урока))))
@tesarotawer4390
@tesarotawer4390 3 года назад
Оп, еще одно крутое начало недели!
@user-od8mn6ns2z
@user-od8mn6ns2z 2 года назад
Хороший урок , зашел на ура!) спасибо!)
@user-wy7sy7rx1d
@user-wy7sy7rx1d Год назад
Автор, СПАСИБО! Даже мне понятно
@sergeykail6132
@sergeykail6132 3 года назад
Класс. понятно и четко
@3x__
@3x__ 3 года назад
спасибо за урок
@____-fh4wx
@____-fh4wx 3 года назад
какой прелестный урок😊
@blackcreeper5314
@blackcreeper5314 3 года назад
Спасибо большое
@user-pr7ts4xg2o
@user-pr7ts4xg2o 3 года назад
Как всегда топово!
@meelstorm90
@meelstorm90 3 года назад
Спасибо большое!
@Neroz49rujka
@Neroz49rujka 2 года назад
ochen` horosho ! big up!
@energy6247
@energy6247 3 года назад
Thank you)
@vladoss4643
@vladoss4643 Год назад
Вопрос!! Для данной задачи правильнее было бы реализовывать такую схему взаимодействия интерфейсов, при которой они бы друг от друга не зависели. Ведь в будующем может быть добавлено такое оружие, как сюрикены, например. Из которых нельзя стрелять, но которые можно кидать. И тогда лучше было бы не делать один интерфейс наследуемым от другого, а сделать класс Knife, реализующий два независимых интерфейса. И это бы рвботало также в текущей ситуации, но имело бы правильную систему развития в будущем. Так что до чих пор непонятно, в каком случае стоит использовать наследуемые интерфейсы))
@user-rg5jn6wh8p
@user-rg5jn6wh8p 10 месяцев назад
После просмотра ролика, тот же вопрос возник. Думаю пойду в коменты напишу такую же мысль. Но наткнулся на ваш коммент...смысла повторятся нету. Тоже не понял какая суть наследования интерфейса от интрфейса. Возможность есть лимит количества интерфейсов которые клас может имплемнтировать, тогда в этом есть смысл...а так :/
@vladoss4643
@vladoss4643 10 месяцев назад
@@user-rg5jn6wh8p ну. Какой смысл я нашёл теперь. Наследование интерфейсов коллекций. В с# есть куча вариантов: IList, ICollection, IEnumerable, IEnumerable и тд... И, как я понимаю, как-то там всё это хитро завязано. Различные комбинации этих интерфейсов оказываются разными коллекциями, типо List, Array, ArrayList и далее. Возможно, там ответ)
@shomagasanov8106
@shomagasanov8106 2 года назад
спасибо огромное за уроки) особенно за "Фьють")))) орал))
@Grapeoff
@Grapeoff 3 года назад
Спасибо!
@ivannebyshynets8829
@ivannebyshynets8829 2 года назад
Awesome!
@user-if1sq2gu9q
@user-if1sq2gu9q 2 года назад
Хыщ и Фьють это пять !)
@fsewcdv
@fsewcdv 2 года назад
примеры супер
@ruslanelzhirkaev3538
@ruslanelzhirkaev3538 3 года назад
Братишка ты лучший
@makasin2393
@makasin2393 3 года назад
Пушка : )
@oiei2767
@oiei2767 2 года назад
спасибо
@redtred7704
@redtred7704 3 года назад
Спасибо за урок! Сергей, скажите, появятся ли в ближайшем будущем домашние задания?
@steb1hp
@steb1hp 3 года назад
Здравствуйте Сергей у меня к вам вопрос вы в одном своем видео рассказываете про книги С# так вот как вы считаете стоит ли брать книги для новичков если уже имеется некое понимание языка в рамках просмотра вашего курса?
@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 лол што? Оружие которое не производит атаку и лечит?? Я бы охренел если бы в ААА шутере я кинул гранату в толпу врагов, а она бы их всех вылечила ))) Ты вообще в курсе что такое оружие? Или в гугле забанили? Оружие в принципе придумано для того чтобы наносить повреждения. Это свойство присутствует у ЛЮБОГО оружия ДАЖЕ когда оно сломано или разряжено.. И неважно какого типа урон оно наносит, физический, магический или даже ментальный, на то оно Б**ТЬ и оружие!!! РЛС это вообще гребаный радар весом в ТОННУ минимум!!! Как ты его в инвентарь поместишь???? РЭБ вообще это не предмет даже. Просто фейспалм на всё лицо...
@romant2394
@romant2394 2 года назад
Дякую за урок! Є два запитання: 1) Як у вас ситуація, всі цілі, все гаразд із близькими та рідними? 2) Чи є якийсь сенс реалізовувати для ножа логіку Fire, якщо він ніколи не буде її використовувати. Тобто, чи є інша опція поєднати IWeapon і IThrowingWeapon, при цьому уникнути написання зайвої додаткової логіки яка займає місце і (напевно) дає більше навантаження на систему? Знову ж таки, який сенс робити реалізацію методу Fire який, за вашими словами, може займати багато рядків коду та виконувати особливу логіку при тому, що він ніколи не буде використаний. Як обійти цю ситуацію? Чекаємо на нові відео та пояснення, дуже вдячний за вашу працю. Вивчуся і почну заробляти, я - ваш постійний патрон
@mayakovsky810
@mayakovsky810 2 года назад
Сделайте ролик по виртуальным классам пожалуйста. Очень интересно
@pavelkross
@pavelkross 3 года назад
спасибо. очень жду wpf
@user-qp5gu8zg4y
@user-qp5gu8zg4y 2 года назад
В этом уроке мы обсудим тему наследования интерф
@donlinoleum831
@donlinoleum831 3 года назад
Друзья, я верно понял основной посыл, что главное отличие абстрактного класса, с абстрактными методами в нем, от интерфейса это именно возможность множественного наследования у интерфейсов? А за видос большое спасибо)
@Banzaaaa
@Banzaaaa 3 года назад
Да но немножко сложнее. У ExtrimeCode есть ролик на тему проблематики ООП. Если вкратце Интерфейсы позволяют создать наследование не в контексте глубокой иерархии, а как бы сбоку. Т.е. только те наследники которые должны реализовывать что-то без привязки к иерархии. И в этом смысле методы по умолчанию для интерфейсов хоть и нарушают парадигму, но дают широкий инструментарий программисту.
@user-tp1ge8xs4e
@user-tp1ge8xs4e 3 года назад
Здравствуйте! Подскажите пожалуйста: по первому видео "плюшки с#" хотел создать библиотеку классов, но у меня нет шаблона class library. Как подключить шаблон или чем заменить его? Visual Studio 2019
@mvzex
@mvzex 3 года назад
Сколько примерно уроков до конца курса осталось?
@user-rf8dx9us8e
@user-rf8dx9us8e 2 года назад
Учитывая,что курс по с++ был на более,чем 200 уроков,а этот курс планируется больше,то будет ещё 100-150 уроков. Наверное.... Надеюсь.
@user-ql6rp7oc8h
@user-ql6rp7oc8h Год назад
@@user-rf8dx9us8e не повезло
@user-lb2gm5jh2v
@user-lb2gm5jh2v 4 месяца назад
я посмотрел. все ок
@user-hh2qq2jk2n
@user-hh2qq2jk2n 3 года назад
Какой шрифт вы используете?
@Its.milasha
@Its.milasha 3 года назад
Сергей, а ты даешь индивидуальные занятия, если есть конкретные запросы и сколько это стоит?
@user-dl2ji8rh7j
@user-dl2ji8rh7j 3 года назад
Здравствуйте Сергей, у меня вопрос. Можно как то программу написать в кейсы?
@user-pd1ry8ge5t
@user-pd1ry8ge5t 3 года назад
Привет. А плюшки новичкам пока стоит смотреть или лучше сначала пройти курс?
@hutoryanin
@hutoryanin 3 года назад
*Л. а. й. к.*
@user-eh8dv5dh7w
@user-eh8dv5dh7w 2 года назад
коммент для продвижения
@ignisfeuer3528
@ignisfeuer3528 2 года назад
желательно от пяти слов комменты делать для этого.
@valentyn4367
@valentyn4367 Год назад
А коли вийдуть нові уроки?
@user-hg5sw1tj4u
@user-hg5sw1tj4u Год назад
зроби будь ласка урок про ключове слово yield
@gopnikkasarj6797
@gopnikkasarj6797 2 месяца назад
я вот не понимаю, интерфейсы, как я понял, должны обосновывать всё и вся, например такие как поверхность любого объекта, а тут конкретный класс, так тоже можно что ли?
@shlopaiushiy-po-popke
@shlopaiushiy-po-popke 3 года назад
я свечку поставлю за развитие канала
@user-gm5rn6po7h
@user-gm5rn6po7h 3 года назад
+++
@user-mm7ch3xw4e
@user-mm7ch3xw4e 2 года назад
Судя по количеству лайков в начале плейлиста и в конце, не все добрались до конца))))))
@Lukas13333
@Lukas13333 Год назад
Это даёт мотивацию)
@Mr.ESCANOR.
@Mr.ESCANOR. 3 года назад
ЗДРАСТВУЙТЕ подскажите на кого сейчас актуально отучиться и реально после обучения трудоустроиться??? И где учиться 1.Гик Брейнс 2.Яндекс практикум 3. Скилбокс Или же есть чтото иное где можно получить достойное образование в сфере програмирования и работать обеспечивая семью??????7 Буду рад помощи не равнодушных Всем спасибо за ответы.
@madmax6476
@madmax6476 3 года назад
Меня тоже интересует данный вопрос, будем ждать, может кто-нибудь и ответит
@bomb4ik
@bomb4ik 3 года назад
Можно ДЗ, пожалуйста. Спасибо😉
@viktarvarabei6079
@viktarvarabei6079 3 года назад
Сергей, вы где?(
@SimpleCodeIT
@SimpleCodeIT 3 года назад
Со следующего понедельника продолжим =)
@hutoryanin
@hutoryanin 3 года назад
"какой-то комментарий..."
@BillGates-ry3dk
@BillGates-ry3dk 3 года назад
Весь мир Хыщ , а ты в нём Фьють.
Далее
Заметили?
00:11
Просмотров 3 млн
The past and future of Pringles🥔
00:18
Просмотров 1,4 млн
Vue JS 3 Tutorial for Beginners #8 - The Vue Router
47:48
Заметили?
00:11
Просмотров 3 млн