Тёмный

Полиморфизм | виртуальные методы c# | virtual override c# | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | # 75 

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

В этом уроки мы на простом примере рассмотрим что такое полиморфизм в ООП, для чего он нужен и как его использовать в языке программирования C#. Так же мы рассмотрим инструмент который понадобятся для реализации полиморфизма - переопределение виртуальных методов с помощью ключевых слов virtual и override.
✅ ИСХОДНЫЙ КОД / iskhodnyi-kod-k-49336543
🔹 Telegram канал t.me/SergeySimpleCode
🔹 Наша группа ВК smplcode
✅ Доступ к исходному коду и спонсорство / simplecode
✅ donatepay.ru/don/SimpleCode
✅ BTC кошелек: 12oYfJnvt76wjJbpvfhM41m6KPz6uz4LD4
🔹 Ключевое слово base в C# | наследование и конструктор класса | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | # 72 • Ключевое слово base в ...
🔹 Операторы as is c# | наследование и приведение типов в C# | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | # 73 • Операторы as is c# | н...
🔹 Наследование в C# и модификаторы доступа | модификатор protected c# | C# ООП | # 74 • Наследование в C# и мо...
✅ Подписывайтесь на канал / @simplecodeit
00:00 ► о модификаторах доступа си шарп
00:31 ► для чего нужен полиморфизм и какую проблему он решает
04:51 ► virtual override, переопределение виртуальных методов и полиморфизм
09:35 ► что будет если не переопределить метод класса
11:10 ► полиморфизм и модификаторы доступа
#сишарп #simplecode #урокипрограммирования

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

 

3 июн 2024

Поделиться:

Ссылка:

Скачать:

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

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 148   
@SimpleCodeIT
@SimpleCodeIT 3 года назад
Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =) ✅Доступ к исходному коду и спонсорство www.patreon.com/SimpleCode ✅ donatepay.ru/don/SimpleCode ✅BTC кошелек: 12oYfJnvt76wjJbpvfhM41m6KPz6uz4LD4
@mkoghazanjyan9508
@mkoghazanjyan9508 3 года назад
da vse zdelayem Gospodin SERGEY , sposibo za vashi uroki no proshu vas ochen proshu nemnochko po bistreeye kinte vido ostalnoe proshu ochen sposibo
@gupishayvi4341
@gupishayvi4341 3 года назад
Будут ли отдельные видео по пятерному проектированию ? Порождающие, Структурные, Поведенческие. Паттерны разработки: MVC vs MVP vs MVVM vs MVI? SOLID?
@tominoker2
@tominoker2 3 года назад
Почему не было такого преподавателя в универе??( Я исписал больше листов, написал больше программок, нежели за все время обучения в универе. Уже 45 листов А4 с двух сторон, 45 страниц настоящего сокровища! Книги это хорошо, но гораздо лучше записывать и все излагать для себя своим языком по этим урокам. Вроде все это проходил, но как то не вникал. А сейчас я каждое слово понимаю, наконец-то, с жадностью информацию поглощаю. Я наконец-то стал понимать суть ООП. Если бы такие преподаватели были в каждом вузе и каждой школе, эх. Спасибо вам огромное!
@kirik06711
@kirik06711 2 года назад
истину глаголишь. в вузе преподу абсолютно все равно, не объясняет, но требует. как бы классика для вуза, тебе дают 20%, 80% учишь сам, но хочется, чтобы учили, а не просто приходил отсидеть пару..
@HeIvis
@HeIvis Год назад
Капитан Молдова, как ваши успехи?)
@dizmo..
@dizmo.. 3 года назад
Как всегда, спасибо лучшему учителю по программированию за отличный урок!
@user-lx5vv3uu8u
@user-lx5vv3uu8u 3 года назад
Сергей, салют! Благодарю!
@pesk0w
@pesk0w Год назад
Спасибо, из-за "Рон дон дон" я теперь хорошо запомнил как работает virtual и override))))))😀
@adamadamesko9759
@adamadamesko9759 3 года назад
Этот урок поднял мне настроение, и я даже кое-что понял!
@tutnichego4973
@tutnichego4973 3 года назад
Как прекрасны понедельники. Спасибо за урок!
@ShomLZ
@ShomLZ 3 года назад
Спасибо за очередное видео. За книги из прошлого видео тоже спасибо, очень полезные оказались.
@bloodmif
@bloodmif 3 года назад
Спасибо! отличная подача материала и приятный лектор. Очень жаль что пропали домашние задания, они реально помогали - как способ закрепления материала, мотивация практики и как возможность посмотреть на ваше решение поставленной задачки, стиль и чистоту написания. Получал заряд бодрости и эндорфинов, когда моё и ваше решение практически совпадали
@mikola_belarus
@mikola_belarus 3 года назад
Хочу выразить благодарность данному сенсею за отличный урок
@michaeltkachenko7313
@michaeltkachenko7313 3 года назад
Ура, ну наконец то полиморфизм, долго ждал конечно
@yevheniikovalenko5950
@yevheniikovalenko5950 3 года назад
Полезное видео, и надеюсь не последнее на тему полиморфизма, тема всё-таки достаточно большая, было бы здорово рассказать про паттерн "Стратегия" ведь это чистейший полиморфизм. Ну и разновидности полиморфизма тоже пригодились бы..
@makasin2393
@makasin2393 3 года назад
Ждал с нетерпением:)
@flepjack
@flepjack 3 года назад
Лайк не глядя и комментарий в поддержку)
@user-kz4xm7zk5c
@user-kz4xm7zk5c 3 года назад
И снова огромная благодарность за урок, Сергей! Кстати, я скачал книги, посоветованные тобой, и стараюсь изучать.
@karkar2x
@karkar2x 3 года назад
Оставлю комментарий для продвижения канала. Очень крутые уроки!! ❤️❤️❤️
@SoundIKS
@SoundIKS 3 года назад
Спасибо большое за урок!
@user-gn3ei9ef2q
@user-gn3ei9ef2q 3 года назад
Ура! Спасибо)
@MrRelevance
@MrRelevance 3 года назад
Спасибо за ваши уроки!
@user-ml5tn8qn8j
@user-ml5tn8qn8j 2 года назад
Какие же шикарные уроки С вами я выучил си шарп и теперь могу делать свою игру С первой прибыли обязательно поделюсь)
@avito34
@avito34 Год назад
как успехи?
@user-ml5tn8qn8j
@user-ml5tn8qn8j Год назад
@@avito34 в процессе
@KlevaGameS
@KlevaGameS 6 месяцев назад
Благодарю за Урок.
@mkoghazanjyan9508
@mkoghazanjyan9508 3 года назад
gospodin SERGEY proshuu vass ochen pobistree kinte vashi video ochen prosimm ochenn nado vsee sposibo za vsex vash video lessonss thenks
@ihorrud1962
@ihorrud1962 3 года назад
Спасибо Сергей!
@user-xr3ey2td2u
@user-xr3ey2td2u Год назад
Добрый день! Вы ПРЕКРАСНО ведете ВСЕ уроки. Я читаю C# студентам не первій год. И всем рекомендую только Ваши уроки. Кратко. Понятно. Без сленга! Просто идеально! Спасибо.
@donlinoleum831
@donlinoleum831 3 года назад
Как всегда все на высшем уровне!
@cyberwarlus2758
@cyberwarlus2758 3 года назад
То чуство когда здесь более подробнее чем на зарубежных курсах
@saha4005_
@saha4005_ 3 года назад
Спасибо тебе за то что продолжаешь уроки по с# очень помогаешь в развитии
@saha4005_
@saha4005_ 3 года назад
))))
@Antonov_Ivan.
@Antonov_Ivan. 2 дня назад
Спасибо за урок!
@user-xs3kf9tx1m
@user-xs3kf9tx1m 2 года назад
Очередное огромное спасибо за видео!
@geshoi
@geshoi 2 года назад
Такие уроки, где легко понять смысл, мне очень нравятся.
@egorkalmykov4003
@egorkalmykov4003 3 года назад
Огромное спасибо за полезнейшие уроки !!!
@user-bn8eb7um1g
@user-bn8eb7um1g 3 года назад
Сергей, сделайте, пожалуйста, уроки по Git
@user-mj3yv1km6i
@user-mj3yv1km6i 3 года назад
Спасибо за знания.
@Blackheart9511
@Blackheart9511 3 года назад
Прекрасные уроки, Сергей. Спасибо огромное за доступные и интересные уроки! Не подумайте, что я пытаюсь вас учить, просто мое пожелание (и думаю, другим бы тоже понравилось): домашние задания. Раньше вы их уже периодически предлагали, но перестали. Возможно, из-за малого количества обратной связи прекратили, может по другим причинам, но мне кажется, что их очень не хватает. Я не предлагаю сильно заморачиваться и делать аж по отдельному ролику для разбора каждой домашки, но было бы славно, если бы вы предлагали подписчикам написать то или это на основе имеющихся у них знаний. Даже хотя бы просто предложить небольшой перечень задачек на условном codewars. Разбирать их в дальнейшем вовсе не обязательно - кто захочет, тот сделает. Ваши уроки очень информативны, но недостаток практики сказывается. Говорю из собственного опыта, потому что недавно решил написать что-то вроде ежедневника для консоли с возможностью сохранения, загрузки и редактирования записей, но изломал себе всю голову в процессе. Необходимые знания сами по себе имеются, но из-за того, что практического применения они не до сего момента не находили, очень трудно понять, что-где-когда делать. В итоге просто теряешься.
@ifelru
@ifelru 2 года назад
Спасибо за отличные уроки!
@VADIM-SOLOV
@VADIM-SOLOV 2 года назад
Благодарю за отличный урок!
@user-od8mn6ns2z
@user-od8mn6ns2z 2 года назад
Приятно , когда темы получается хорошо понять !) Спасибо за урок !
@viktarvarabei6079
@viktarvarabei6079 3 года назад
Красавчик, спасибо ❤️
@ivankorchmit6893
@ivankorchmit6893 3 года назад
Очень круто, спасибо! Я бы хотел домашние задания в последующих уроках.
@tutnichego4973
@tutnichego4973 3 года назад
Согласен, тоже жду ДЗ.
@HATAHKE762
@HATAHKE762 3 года назад
Ловите ДЗ: В окне приложения первоначально появляются 4 поля ввода, относящиеся к двум категориям: Если пользователь вводит в поле ввода первой категории символ, соответствующий латинской букве, то этот символ в строке появляется дважды. Если пользователь вводит в поле ввода второй категории символ, соответствующий цифре, то в поле ввода кроме этого символа появляется слово, соответствующее этой цифре. Когда строка, содержащаяся в поле ввода, становится длиннее 50 символов, такое поле ввода меняет свое поведение, независимо от категории: при вводе любого символа в строке исчезает первый символ. Различия в поведении полей ввода реализовать с помощью полиморфизма.
@tutnichego4973
@tutnichego4973 3 года назад
@@HATAHKE762 Задание очень интересное. Будет время - реализую код и отправлю сюда. Ну, а пока мне в голову единственное, что приходит в голову как это сделать - через try catch запарсить строку в int. Не получается - действие со строкой. Удалить первый символ - проще простого, т.к. строку можно перевести в char-массив и там уже удалять.
@tutnichego4973
@tutnichego4973 3 года назад
@@HATAHKE762 class PrintDate // класс вывода информации. { public void PrintD(PrintString print, string value) // сам метод, который принимает в себя класс PrintString и его наследников { print.Print(value); // вывод информации } } class PrintString // прародитель остальных классов - вывод строки. { public virtual void Print(string value) // метод вывода { for (int i = 0; i < value.Length; i++) // проверка символов внутри строки { if (((value[i] >= 'a') && (value[i] = 'A') && (value[i] = 50) // если длина сообщения равна 50 или больше - применяется метод класса BigDate print.PrintD(new BigDate(), valueDate); else // иначе как... { try // будет попытка перевести строку в число { int.Parse(valueDate); print.PrintD(new PrintInt(), valueDate); // удача - используем метод класса PrintInt } catch (Exception) // в ином случае это будет строка и тогда... { print.PrintD(new PrintString(), valueDate); // используем метод класса PrintString. } } } }
@t00much20
@t00much20 3 года назад
Большое спасибо за уроки. С такой подачей материала не полюбить программирование просто невозможно.
@KirillDoctor2105
@KirillDoctor2105 3 года назад
я только сегодня прошел эту тему и ты выложил этот ролик!!Благодарю💓
@boostedrobloxdevelopment3374
@boostedrobloxdevelopment3374 2 года назад
Спасибо вам огромное за подобные видео! Очень полезно
@selfcreator8921
@selfcreator8921 2 года назад
Объяснения топ, коротко и по сути, спасибо !
@artlinestudio6735
@artlinestudio6735 2 года назад
На второй раз понятнее ). Спасибо за отличный урок Сергей!
@inspirationchannel6901
@inspirationchannel6901 3 года назад
Интерестно, что в Java это работает "по умолчанию" (10:47). Сначала изучал просто Java, теперь понадобилось перейти на C#, Ваши уроки сильно помогают, но периодически наталкиваюсь на такие ньюансы. Спасибо за Ваш труд.
@DikiyKomar
@DikiyKomar Год назад
Возможно Ява более высокоуровневый.
@infinitynoir5441
@infinitynoir5441 3 года назад
Как всегда спасибо)
@tellur6726
@tellur6726 2 года назад
Благодаря вашим урокам многие из лабораторных работ по программированию могу делать и понимать хорошо! Спасибо вам огромное за ваш труд!
@3x__
@3x__ 3 года назад
спасибо за урок!
@user-rx3xs8qd8t
@user-rx3xs8qd8t 2 года назад
Ты невероятно крутой препод. Канал просто находка для новичков. Пожалуйста не бросай выпускать видосы!
@triceramops3280
@triceramops3280 Год назад
Это просто лучшее объяснение, раньше не особо их юзал так как не понимал преимущества, спасибо сенсей, открыл глаза
@elenavoloh5321
@elenavoloh5321 3 года назад
Коммент для продвижения канала!
@windws7137
@windws7137 Год назад
Чел, ты лучший. Спасибо за понятную подачу материала! Коммент для продвижения
@shadowbeast3568
@shadowbeast3568 3 года назад
Очень хорошо объясняется. Надо своим студентам ссылку на ваш канал кинуть - пусть штудируют..
@PS-vj6jz
@PS-vj6jz 3 года назад
Уроки действительно хорошие
@ivannebyshynets8829
@ivannebyshynets8829 2 года назад
Спасибо большое!
@gedvilgame7937
@gedvilgame7937 Год назад
дякую автору за хороший матеріал, все зрозуміло і розбито на окремі уроки
@quazar-kek2649
@quazar-kek2649 Год назад
Сподіваюсь з автором все добре. Дуже корисні відео, мені вони дуже допомогли в розумінні матеріалу. Шаную вашу працю.
@chon-coding
@chon-coding 2 года назад
Благодаря этому человеку я наконец начал понимать ооп) благодарю за уроки )
@HeIvis
@HeIvis Год назад
Привет, прошел год. Есть успехи?
@nikolayprudov170
@nikolayprudov170 2 года назад
Great! Thanx so much!
@denmoonchild
@denmoonchild 3 года назад
блин именно в этот день у меня был собес на автоматизатора тестов на C# и там спрашивали про эту тему а я дурак не повторил и мог бы утром этот видос чекнуть и он бы меня спас, а так по мне я плохо отстрелялся, но будет видно, нет - так нет, буду больше стараться
@qwerty89993
@qwerty89993 5 месяцев назад
Спасибо!
@user-ob7iy9ws6b
@user-ob7iy9ws6b 3 года назад
Большое спасибо за видео, было бы круто увидеть выпуск про абстрактные классы
@artemky3bmu45
@artemky3bmu45 8 месяцев назад
Спасибо!!!
@ruslanelzhirkaev3538
@ruslanelzhirkaev3538 3 года назад
Братишка ты лучший!!!
@blackgolddev4023
@blackgolddev4023 3 года назад
Шикарно
@vladimir_pl
@vladimir_pl 3 месяца назад
Было сложно но кое что понял)
@leskhanmuratuly5374
@leskhanmuratuly5374 2 года назад
Спасибо)
@adeya6396
@adeya6396 2 года назад
Супер понятно
@sabatonbaton6105
@sabatonbaton6105 3 года назад
Спасеба :D
@sergeynovikov7049
@sergeynovikov7049 3 года назад
Ура!!
@user-ut8xi7hh7w
@user-ut8xi7hh7w 11 месяцев назад
благодарю
@krs_83
@krs_83 3 года назад
спасибо
@lansvans3553
@lansvans3553 2 года назад
ура я нашла ещё один толковый источник по программированию
@MrDnbass
@MrDnbass 2 года назад
Спасибо Сергей!, очень надеюсь на 105 видос.
@Player_MV
@Player_MV Год назад
Мы его так и не дождались
@vladisslavss
@vladisslavss 2 года назад
Лукас и коммент в поддержку канала!) Очень крытые видосы. Подойдут для закрепления материала!)
@hayl7990
@hayl7990 Год назад
ты тоооооооооооооооооооооооооооооп!!!!!
@keng_makon
@keng_makon 2 года назад
Спасибо, я ставлю всегда лайк, обесняете классно, но, все же я хочу сказать, мышку на экране быстро скролом двигаете вверх вниз, туда сюда, не надо а то глаза бегает не успевает.
@GoodOk.
@GoodOk. 3 года назад
👍
@antonskuratov9637
@antonskuratov9637 3 года назад
Однозначно лайк!!!
@Roman_SBB
@Roman_SBB 3 года назад
"Рон дон дон" 👍
@DikiyKomar
@DikiyKomar Год назад
На данном примере, Можно было не переопределять startengine() в SportCar, там можно использовать метод и без override. Но как для лучшего понимания материала, спасибо!
@user-gr1ht3rv5z
@user-gr1ht3rv5z 3 года назад
Спасибо большое! продвигаю)))
@unknown6535
@unknown6535 2 года назад
если от класса наследника (в котором мы переопределили виртуальный метод) привестись к базовому классу, то всёравно будет вызван переопределённый метод из класса наследника
@siarheitkachou6006
@siarheitkachou6006 3 года назад
Давай ролик про рефлексию.
@montecristo31
@montecristo31 3 года назад
Здравствуйте, подскажите пожалуйста. Дело в том что в своих урока по C++ вы используете VS. Но к сожалению версии VS под линукс нету, поэтому я хочу выбрать какой нибудь другой IDE. Так вот у меня в будущем не возникнут из-за этого проблемы?
@user-wp2ek8mx3c
@user-wp2ek8mx3c 3 года назад
Сергей, спасибо за работу! Есть небольшая просьба от человека с проблемами по зрению: если Вас не затруднит, не могли бы Вы при записи роликов использовать какую-нибудь светлую контрастную тему для VS?
@montecristo31
@montecristo31 3 года назад
Подскажите пожалуйста, для того что бы изучить плюсы, обязательно нужно начинать с СИ?
@vitor_corve
@vitor_corve 3 года назад
I move to fast on the gas, don't chase me!
@blackberry7191
@blackberry7191 3 года назад
Здравствуйте Сергей. А сколько примерно ещё будет серий?
@ihorrud1962
@ihorrud1962 3 года назад
Сергей,как думаете нужно много знать Си шарп что бы создавать игры?Я именно об знаниях, вы когда ни будь занимались Играми?И еще один вопрос Xamarin хуже чем Kotlin,ReactNative,Java?
@dronsan-unity7302
@dronsan-unity7302 3 года назад
если до сюда дошел - простенькие можешь, много же видосов с созданием игр
@user-eh8dv5dh7w
@user-eh8dv5dh7w 2 года назад
коммент для продвижения
@user-ps5zp7de5c
@user-ps5zp7de5c 2 года назад
Сергей, спасибо за урок. Время 02:46 объясните на каком уроке объясняется запись “person.Drive(new Car());”? Почему тут можно записать “new Car()” вместо “Car car=new Car();” ?
@GGamess
@GGamess 2 года назад
потому что //new Car()// это тоже самое что //car//
@pavlom8882
@pavlom8882 2 года назад
Когда ты пишешь: “Car car=new Car();” , ты выделишь для оперативной памяти место, а когда ты напишешь: “new Car()”, ты на временно выделяешь память, и после этого знака }, там больше ничего не будет. Если ошибаюсь, поправьте, пожалуйста.
@GGamess
@GGamess 2 года назад
@@pavlom8882 после выполнения метода в любом случае стек освободится и ссылка их стека на объект в куче удалится. Затем когда среде удобно, она удалит данные из кучи, когда посчитает нужным. Там не оперативная память, а ссылка в стеке на объект в куче - и эта ссылка будет создаваться и в том и в другом случае, потому что так данные хранятся.
@user-nk4qk7km4j
@user-nk4qk7km4j Год назад
Такого он не объяснял, да.
@user-qd1fv5oj9m
@user-qd1fv5oj9m 3 года назад
я чутка не понял по поводу new. допустим в базовом классе есть метод Print public void Print() { Console.WriteLine(name); Console.WriteLine(age); Console.WriteLine(weihgt); Console.WriteLine(height); } если в дочернем классе мы добавим 2 новых поля(CastSpeed и Speed) и напишем public new void Print() { base.Print(); Console.WriteLine(CastSpeed); Console.WriteLine(Speed); } то в консоль выведется 6 параметров. 4 параметра из основного класса(name,age,weight,height) и 2 из наследника(CastSpeed,Speed). а если мы в дочернем классе напишем public new void Print() { Console.WriteLine(CastSpeed); Console.WriteLine(Speed); } то в консоль выведется только 2 параметра из дочернего класса. так в чем же отличие в данном виде переопределения метода с оператором new,от virtual\override? не могу сообразить,хоть убейте))) пример написал из своего кода. писал в VS и так и так,и оба варианта работают.
@user-nk4qk7km4j
@user-nk4qk7km4j Год назад
Я вопрос твой не могу понять)
@youchinafriend
@youchinafriend 3 года назад
Привет SimpleCode, не хотел бы запилить курс именно с# для Unity?
@youchinafriend
@youchinafriend 3 года назад
спасибо.
@pavlom8882
@pavlom8882 2 года назад
Я б тоже хотел его..
@youchinafriend
@youchinafriend 2 года назад
@@pavlom8882 уже узнал, но бросил программирование, в общем, язык с# состоит из ключевых слов и конструкций, например классы, методы, поля, например в юнити все эти конструкции так же используются, просто функционал может быть разный. Изучай движок и язык с#, потом ты поймёшь что для чего, удачи. Так же в юнити присутствует свои классы и методы которые стоит изучить.
@user-sv8xl6zt1d
@user-sv8xl6zt1d 3 года назад
Автор а как с вами можно связаться что бы вы мне с вашим богатым опытом помогли пофиксить одну программу?
@maksimuz3640
@maksimuz3640 3 года назад
Извините , а что это за проект консольное приложение или что??
@VeryBadElephant
@VeryBadElephant Год назад
Рон дон дон!
@wingofnight870
@wingofnight870 Год назад
что мешает мне просто переопределить функцию ....а понял. Читаете мысли шеф
@vladkondratenko7397
@vladkondratenko7397 3 года назад
То есть переопределение метода ключевим словом new ни на что не влияет?
@user-ql2mb2oc7c
@user-ql2mb2oc7c 6 месяцев назад
На 8:55 у меня появляются обе надписи от обычного Car и от SportCar. В чём нюанс?
@user-mv7vt7bw2w
@user-mv7vt7bw2w 4 месяца назад
возможно, ты обращался не к методу, а к конструктору
Далее
Принципы ООП. 3. Полиморфизм
9:04
Каха инструкция по шашлыку
01:00
Полиморфизм на практике
10:42
Просмотров 177 тыс.
Принципы ООП. 1. Инкапсуляция
8:55