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

แชร์
ฝัง
  • เผยแพร่เมื่อ 15 ก.ย. 2024

ความคิดเห็น • 104

  • @SimpleCodeIT
    @SimpleCodeIT  3 ปีที่แล้ว +9

    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 Множественное наследование - вот преимущество интерфейсов перед абстрактными классами. С помощью этого можно расширять функционал, не ломаю логику и архитектуру приложения

  • @integer_dev
    @integer_dev 3 ปีที่แล้ว +37

    Сразу лайк! Грех не поддерживать такой хороший курс! надеюсь в скором времени мы доберемся и до событий, делегатов, лямбд, символов удаления, переопределение арифметических операторов, обобщению (generics), к неуправляемым обьектам и до многого другого добра в c# 😎👊👍

    • @sergeynovikov7049
      @sergeynovikov7049 3 ปีที่แล้ว

      Говорят, лучше чуть-чуть (пару минут) выждать, иначе не учитываются лайки и комменты при монетизации.

  • @PostnikovSergeyAlex
    @PostnikovSergeyAlex 3 ปีที่แล้ว +14

    Отличная идея, объяснение на примере создания игры, идеально усваивается! Спасибо Вам, Сергей, никакие курсы не сравнятся с Вашим талантом объяснять и подбирать материал, ещё раз Спасибо!

  • @carservice3076
    @carservice3076 3 ปีที่แล้ว +63

    знаешь в чём минус твоих уроков?......они слишком классные, крутые. Ладно, это шутка, но на самом деле они просто супер! И ведь запарился и снимаешь такие уроки. Я к чему, просто есть другие люди и они тоже делают уроки, но посмотришь их и программирование изучать перехочется . А у тебя так всё разложено и разжевано, проще некуда. Спасибо за твои классные уроки!

  • @integer_dev
    @integer_dev 3 ปีที่แล้ว +28

    ура, новый урок! + к мотивации стать c# программистом

  • @cyberwarlus2758
    @cyberwarlus2758 3 ปีที่แล้ว +19

    Спасибо за ваш труд! Сергей

  • @ВиталийКирия
    @ВиталийКирия 3 ปีที่แล้ว +10

    Сергей огромная вам благодарность за уроки! Вы большой молодец!

  • @artlinestudio6735
    @artlinestudio6735 2 ปีที่แล้ว +5

    Отличный урок! В прошлом ничего не понял ). В этом понял все и за тот и за этот уроки! Спасибо Сергей!

  • @ShomLZ
    @ShomLZ 3 ปีที่แล้ว +4

    Уже далеко вперёд убежал в обучении, но все равно смотрю Сергея, для закрепления материала. Спасибо за урок!

    • @blackcreeper5314
      @blackcreeper5314 3 ปีที่แล้ว

      А где изучали?

    • @ShomLZ
      @ShomLZ 3 ปีที่แล้ว +4

      @@blackcreeper5314 metanit и книжки читаю (Сергей давал список в видео) + задачи на codeward

  • @onegarrisonmo6946
    @onegarrisonmo6946 3 ปีที่แล้ว +16

    Здравствуйте Сергей, спасибо вам большое за ваши уроки🙏.
    Если получится снимите видеоурок для плейлиста { C# ПЛЮШКИ } на тему работа с Api в С#.📡

    • @sergeynovikov7049
      @sergeynovikov7049 3 ปีที่แล้ว +2

      Поддерживаю просьбу!

    • @michaeltkachenko7313
      @michaeltkachenko7313 3 ปีที่แล้ว

      Там ничего сложного нет, самому легко разобраться

    • @sergeynovikov7049
      @sergeynovikov7049 3 ปีที่แล้ว +2

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

  • @mikola_ua7050
    @mikola_ua7050 3 ปีที่แล้ว +8

    Сделайте, пожалуйста, урок по работе с GitHub в VisualStudio как сохранять, загружать проект и т.д. очень интересно

  • @sergeynovikov7049
    @sergeynovikov7049 3 ปีที่แล้ว +3

    Забываю иногда про понедельники, забот хватает и вдруг уведомление о новом выпуске!) И всё сразу играет красками!)

  • @_chill_relax_calm4647
    @_chill_relax_calm4647 3 ปีที่แล้ว +1

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

  • @maxwad
    @maxwad 3 ปีที่แล้ว +2

    Сергей, огромное спасибо за уроки. Главное - не останавливайся.)

  • @vadimpetrov8451
    @vadimpetrov8451 3 ปีที่แล้ว +2

    огромное Вам спасибо за отличные уроки. всегда с удовольствием смотрю !.🚁🚀

  • @VADIM-SOLOV
    @VADIM-SOLOV 3 ปีที่แล้ว +2

    Вау! Интерфейсы это очень крутая штука! Спасибо за урок :)

  • @adamadamesko9759
    @adamadamesko9759 3 ปีที่แล้ว +4

    Я очень рад что урок мне понравился, спасибо!

  • @firemanhood1526
    @firemanhood1526 3 ปีที่แล้ว +4

    Твои уроки дух захватывает))

  • @farrukhyuldoshev8223
    @farrukhyuldoshev8223 3 ปีที่แล้ว +4

    Ура)) долго ждал новый урок спасибо огромное.

  • @justcode5626
    @justcode5626 3 ปีที่แล้ว +2

    Удачи вам и терпения в обучении искусства программирования!

  • @egorkalmykov4003
    @egorkalmykov4003 3 ปีที่แล้ว +1

    Спасибо большое за полезнейшие уроки !!!

  • @Vladlenka
    @Vladlenka 3 ปีที่แล้ว +5

    -Видишь актив?
    -Нет
    -И я не вижу. А он есть

  • @ifelru
    @ifelru 2 ปีที่แล้ว +1

    Спасибо за полезный и отличный урок!

  • @user-gn3ei9ef2q
    @user-gn3ei9ef2q 3 ปีที่แล้ว +6

    Круто! Спасибо большое!

  • @DmitryDolganov
    @DmitryDolganov 3 ปีที่แล้ว +3

    Сергей, благодарю!!!

  • @user-od8mn6ns2z
    @user-od8mn6ns2z 2 ปีที่แล้ว +1

    Хороший урок , зашел на ура!) спасибо!)

  • @ninjadiestanding5082
    @ninjadiestanding5082 3 ปีที่แล้ว +1

    Большое спасибо за урок!

  • @vladoss4643
    @vladoss4643 ปีที่แล้ว +4

    Вопрос!!
    Для данной задачи правильнее было бы реализовывать такую схему взаимодействия интерфейсов, при которой они бы друг от друга не зависели. Ведь в будующем может быть добавлено такое оружие, как сюрикены, например. Из которых нельзя стрелять, но которые можно кидать. И тогда лучше было бы не делать один интерфейс наследуемым от другого, а сделать класс Knife, реализующий два независимых интерфейса. И это бы рвботало также в текущей ситуации, но имело бы правильную систему развития в будущем.
    Так что до чих пор непонятно, в каком случае стоит использовать наследуемые интерфейсы))

    • @ДенисВербіцький-ц8ц
      @ДенисВербіцький-ц8ц ปีที่แล้ว +1

      После просмотра ролика, тот же вопрос возник. Думаю пойду в коменты напишу такую же мысль. Но наткнулся на ваш коммент...смысла повторятся нету.
      Тоже не понял какая суть наследования интерфейса от интрфейса. Возможность есть лимит количества интерфейсов которые клас может имплемнтировать, тогда в этом есть смысл...а так :/

    • @vladoss4643
      @vladoss4643 ปีที่แล้ว

      @@ДенисВербіцький-ц8ц ну. Какой смысл я нашёл теперь.
      Наследование интерфейсов коллекций.
      В с# есть куча вариантов:
      IList, ICollection, IEnumerable, IEnumerable и тд...
      И, как я понимаю, как-то там всё это хитро завязано. Различные комбинации этих интерфейсов оказываются разными коллекциями, типо List, Array, ArrayList и далее.
      Возможно, там ответ)

  • @KlevaGameS
    @KlevaGameS 10 หลายเดือนก่อน

    Благодарю за Урок.

  • @alexanderdementjev5867
    @alexanderdementjev5867 3 ปีที่แล้ว +1

    Спасибо. Очень всё доходчиво.

  • @3x__
    @3x__ 3 ปีที่แล้ว +3

    спасибо за урок

  • @Antonov_Ivan.
    @Antonov_Ivan. 3 หลายเดือนก่อน

    Спасибо за урок!

  • @tesarotawer4390
    @tesarotawer4390 3 ปีที่แล้ว +1

    Оп, еще одно крутое начало недели!

  • @____-fh4wx
    @____-fh4wx 3 ปีที่แล้ว +1

    какой прелестный урок😊

  • @user-wy7sy7rx1d
    @user-wy7sy7rx1d ปีที่แล้ว

    Автор, СПАСИБО! Даже мне понятно

  • @sergeykail6132
    @sergeykail6132 3 ปีที่แล้ว +1

    Класс. понятно и четко

  • @user-kz4xm7zk5c
    @user-kz4xm7zk5c 3 ปีที่แล้ว +1

    Сергей, я тебя благодарю!

  • @shomagasanov8106
    @shomagasanov8106 3 ปีที่แล้ว +1

    спасибо огромное за уроки) особенно за "Фьють")))) орал))

  • @Neroz49rujka
    @Neroz49rujka 3 ปีที่แล้ว +1

    ochen` horosho !
    big up!

  • @blackgolddev4023
    @blackgolddev4023 3 ปีที่แล้ว +1

    Шикарно)))) я ждал этого урока))))

  • @blackcreeper5314
    @blackcreeper5314 3 ปีที่แล้ว +2

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

  • @Banzaaaa
    @Banzaaaa 3 ปีที่แล้ว +3

    Очень круто, а главное доступным языком. У меня тут много вопросов сразу. Я так понимаю что последние уроки сделаны на основе паттернов. Есть возможность озвучить их, описать или это предмет следующих лекций? И парадокс, у нас возможно оружие котороe не содержит метода Fire() (Огонь для ножа уже звучит странно). Т.е. нам нужен родительский интерфейс, желательно пустой без деклараций вовсе. Для того что бы при появлении нового оружия не тащить возможно избыточный контракт. Но при этом экземпляры должны наследоваться от него (Архи интерфейса) для контроля входных данных. Такие пустые интерфейсы возможны или это нарушает принципы ООП?

    • @funny_nuts
      @funny_nuts 3 ปีที่แล้ว +2

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

    • @Banzaaaa
      @Banzaaaa 3 ปีที่แล้ว

      Andrew Olsen О это очень простой вопрос. А твой ответ очень сильно уводит в сторону от действительной проблематики ООП и решений с помощью интерфейсов. Вместо более строгой классификации и решений в рамках глубокой архитектуры и гибкости управления через интерфейсы. Ты предлагаешь ситуативный расширяющий костыль. А что если наше оружие не производит атаку а? Например создаёт защиту или лечит или это РЛС или РЭБ. Тогда нам понадобится метод Action() или DoSome() ну что бы вместить все логические понятия. Ой подожди это тоже не походит, ведь наше оружие может вовсе не совершать каких-либо действий. Например просто давать +15hp или создавать ауру и прочее прочее. В моем вопросе уже есть ответы.

    • @funny_nuts
      @funny_nuts 3 ปีที่แล้ว +1

      ​@@Banzaaaa лол што? Оружие которое не производит атаку и лечит?? Я бы охренел если бы в ААА шутере я кинул гранату в толпу врагов, а она бы их всех вылечила ))) Ты вообще в курсе что такое оружие? Или в гугле забанили? Оружие в принципе придумано для того чтобы наносить повреждения. Это свойство присутствует у ЛЮБОГО оружия ДАЖЕ когда оно сломано или разряжено.. И неважно какого типа урон оно наносит, физический, магический или даже ментальный, на то оно Б**ТЬ и оружие!!! РЛС это вообще гребаный радар весом в ТОННУ минимум!!! Как ты его в инвентарь поместишь???? РЭБ вообще это не предмет даже. Просто фейспалм на всё лицо...

  • @marginal4809
    @marginal4809 หลายเดือนก่อน

    2024 август начинаю писать код заранее не дослушав автора - ИДЕ сама все подставляет. У меня такое подозрение что Вижла смотрит этот курс)))

  • @ivannebyshynets8829
    @ivannebyshynets8829 3 ปีที่แล้ว +1

    Awesome!

  • @energy6247
    @energy6247 3 ปีที่แล้ว +1

    Thank you)

  • @redtred7704
    @redtred7704 3 ปีที่แล้ว +2

    Спасибо за урок!
    Сергей, скажите, появятся ли в ближайшем будущем домашние задания?

  • @steb1hp
    @steb1hp 3 ปีที่แล้ว +2

    Здравствуйте Сергей у меня к вам вопрос вы в одном своем видео рассказываете про книги С# так вот как вы считаете стоит ли брать книги для новичков если уже имеется некое понимание языка в рамках просмотра вашего курса?

  • @romant2394
    @romant2394 2 ปีที่แล้ว +1

    Дякую за урок! Є два запитання:
    1) Як у вас ситуація, всі цілі, все гаразд із близькими та рідними?
    2) Чи є якийсь сенс реалізовувати для ножа логіку Fire, якщо він ніколи не буде її використовувати. Тобто, чи є інша опція поєднати IWeapon і IThrowingWeapon, при цьому уникнути написання зайвої додаткової логіки яка займає місце і (напевно) дає більше навантаження на систему? Знову ж таки, який сенс робити реалізацію методу Fire який, за вашими словами, може займати багато рядків коду та виконувати особливу логіку при тому, що він ніколи не буде використаний. Як обійти цю ситуацію?
    Чекаємо на нові відео та пояснення, дуже вдячний за вашу працю. Вивчуся і почну заробляти, я - ваш постійний патрон

  • @user-if1sq2gu9q
    @user-if1sq2gu9q 2 ปีที่แล้ว +1

    Хыщ и Фьють это пять !)

  • @user-pr7ts4xg2o
    @user-pr7ts4xg2o 3 ปีที่แล้ว

    Как всегда топово!

  • @donlinoleum831
    @donlinoleum831 3 ปีที่แล้ว +1

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

    • @Banzaaaa
      @Banzaaaa 3 ปีที่แล้ว

      Да но немножко сложнее. У ExtrimeCode есть ролик на тему проблематики ООП. Если вкратце Интерфейсы позволяют создать наследование не в контексте глубокой иерархии, а как бы сбоку. Т.е. только те наследники которые должны реализовывать что-то без привязки к иерархии. И в этом смысле методы по умолчанию для интерфейсов хоть и нарушают парадигму, но дают широкий инструментарий программисту.

  • @meelstorm90
    @meelstorm90 3 ปีที่แล้ว

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

  • @user-tp1ge8xs4e
    @user-tp1ge8xs4e 3 ปีที่แล้ว +1

    Здравствуйте! Подскажите пожалуйста: по первому видео "плюшки с#" хотел создать библиотеку классов, но у меня нет шаблона class library. Как подключить шаблон или чем заменить его? Visual Studio 2019

  • @mayakovsky810
    @mayakovsky810 2 ปีที่แล้ว

    Сделайте ролик по виртуальным классам пожалуйста. Очень интересно

  • @ruslanelzhirkaev3538
    @ruslanelzhirkaev3538 3 ปีที่แล้ว

    Братишка ты лучший

  • @fsewcdv
    @fsewcdv 2 ปีที่แล้ว

    примеры супер

  • @mvzex
    @mvzex 3 ปีที่แล้ว +7

    Сколько примерно уроков до конца курса осталось?

    • @user-rf8dx9us8e
      @user-rf8dx9us8e 3 ปีที่แล้ว +4

      Учитывая,что курс по с++ был на более,чем 200 уроков,а этот курс планируется больше,то будет ещё 100-150 уроков. Наверное.... Надеюсь.

    • @user-ql6rp7oc8h
      @user-ql6rp7oc8h ปีที่แล้ว +2

      @@user-rf8dx9us8e не повезло

  • @Grapeoff
    @Grapeoff 3 ปีที่แล้ว

    Спасибо!

  • @user-hg5sw1tj4u
    @user-hg5sw1tj4u 2 ปีที่แล้ว +1

    зроби будь ласка урок про ключове слово yield

  • @ЕвгенийЕмельянов-п2ы
    @ЕвгенийЕмельянов-п2ы 7 หลายเดือนก่อน

    я посмотрел. все ок

  • @pavelkross
    @pavelkross 3 ปีที่แล้ว

    спасибо. очень жду wpf

  • @oiei2767
    @oiei2767 3 ปีที่แล้ว

    спасибо

  • @Pptshnica
    @Pptshnica 3 ปีที่แล้ว +1

    Сергей, а ты даешь индивидуальные занятия, если есть конкретные запросы и сколько это стоит?

  • @makasin2393
    @makasin2393 3 ปีที่แล้ว

    Пушка : )

  • @user-qp5gu8zg4y
    @user-qp5gu8zg4y 2 ปีที่แล้ว

    В этом уроке мы обсудим тему наследования интерф

  • @shlopaiushiy-po-popke
    @shlopaiushiy-po-popke 3 ปีที่แล้ว +1

    я свечку поставлю за развитие канала

  • @gopnikkasarj6797
    @gopnikkasarj6797 5 หลายเดือนก่อน +1

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

  • @valentyn4367
    @valentyn4367 ปีที่แล้ว +1

    А коли вийдуть нові уроки?

  • @user-pd1ry8ge5t
    @user-pd1ry8ge5t 3 ปีที่แล้ว +1

    Привет. А плюшки новичкам пока стоит смотреть или лучше сначала пройти курс?

  • @Mr.ESCANOR.
    @Mr.ESCANOR. 3 ปีที่แล้ว +1

    ЗДРАСТВУЙТЕ подскажите на кого сейчас актуально отучиться и реально после обучения трудоустроиться???
    И где учиться
    1.Гик Брейнс
    2.Яндекс практикум
    3. Скилбокс
    Или же есть чтото иное где можно получить достойное образование в сфере програмирования и работать обеспечивая семью??????7
    Буду рад помощи не равнодушных Всем спасибо за ответы.

    • @madmax6476
      @madmax6476 3 ปีที่แล้ว

      Меня тоже интересует данный вопрос, будем ждать, может кто-нибудь и ответит

  • @user-dl2ji8rh7j
    @user-dl2ji8rh7j 3 ปีที่แล้ว

    Здравствуйте Сергей, у меня вопрос. Можно как то программу написать в кейсы?

  • @user-eh8dv5dh7w
    @user-eh8dv5dh7w 3 ปีที่แล้ว

    коммент для продвижения

    • @ignisfeuer
      @ignisfeuer 3 ปีที่แล้ว +1

      желательно от пяти слов комменты делать для этого.

  • @user-hh2qq2jk2n
    @user-hh2qq2jk2n 3 ปีที่แล้ว

    Какой шрифт вы используете?

  • @hutoryanin
    @hutoryanin 3 ปีที่แล้ว

    *Л. а. й. к.*

  • @viktarvarabei6079
    @viktarvarabei6079 3 ปีที่แล้ว +1

    Сергей, вы где?(

    • @SimpleCodeIT
      @SimpleCodeIT  3 ปีที่แล้ว +7

      Со следующего понедельника продолжим =)

  • @bomb4ik
    @bomb4ik 3 ปีที่แล้ว +1

    Можно ДЗ, пожалуйста. Спасибо😉

  • @user-mm7ch3xw4e
    @user-mm7ch3xw4e 3 ปีที่แล้ว

    Судя по количеству лайков в начале плейлиста и в конце, не все добрались до конца))))))

    • @Lukas13333
      @Lukas13333 2 ปีที่แล้ว

      Это даёт мотивацию)

  • @hutoryanin
    @hutoryanin 3 ปีที่แล้ว

    "какой-то комментарий..."

  • @ВикторМарфин-к8ш
    @ВикторМарфин-к8ш 3 ปีที่แล้ว

    +++

  • @BillGates-ry3dk
    @BillGates-ry3dk 3 ปีที่แล้ว +5

    Весь мир Хыщ , а ты в нём Фьють.