Тёмный

Абстрактные классы | зачем нужны абстрактные методы | abstract c# | полиморфизм | C# ООП | # 76 

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

В этом уроке мы продолжим изучение темы полиморфизма в ООП в языке программирования C# и коснёмся темы абстракции. Выясним что такое абстрактные классы, абстрактные методы, абстрактные свойства, для чего они нужны как используются и как связаны с полиморфизмом в си шарп.
✅ ИСХОДНЫЙ КОД / iskhodnyi-kod-k-49642793
🔹 Telegram канал t.me/SergeySimpleCode
🔹 Наша группа ВК smplcode
✅ Доступ к исходному коду и спонсорство / simplecode
✅ donatepay.ru/don/SimpleCode
✅ BTC кошелек: 12oYfJnvt76wjJbpvfhM41m6KPz6uz4LD4
✅ Подписывайтесь на канал / @simplecodeit
🔹 C# свойства get set | ключевое слово value | автоматические свойства c# | ООП C# Урок | # 62 • C# свойства get set | ...
🔹 Полиморфизм | виртуальные методы c# | virtual override c# | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | # 75 • Полиморфизм | виртуаль...
00:00 ► что будет в уроке
00:40 ► абстракция и абстрактный класс в си шарп
04:05 ► абстрактный метод в си шарп
06:40 ► переопределение абстрактного метода в классе наследнике
09:12 ► полиморфизм в чистом виде
11:22 ► конкретная реализация методов в абстрактном классе
13:23 ► абстрактные свойства и их переопределение
#сишарп #simplecode #урокипрограммирования

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

 

4 июн 2024

Поделиться:

Ссылка:

Скачать:

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

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 159   
@SimpleCodeIT
@SimpleCodeIT 3 года назад
Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =) ✅Доступ к исходному коду и спонсорство www.patreon.com/SimpleCode ✅ donatepay.ru/don/SimpleCode ✅BTC кошелек: 12oYfJnvt76wjJbpvfhM41m6KPz6uz4LD4
@anastasiakim641
@anastasiakim641 3 года назад
Здравствуйте. Сколько всего уроков будет?
@gupishayvi4341
@gupishayvi4341 3 года назад
Будут ли отдельные видео по пятерному проектированию ? Порождающие, Структурные, Поведенческие. Паттерны разработки: MVC vs MVP vs MVVM vs MVI? SOLID?
@GODNET-qe3mu
@GODNET-qe3mu 3 года назад
@@gupishayvi4341 DRY KISS YAGNI :)
@user-hm1rn2ed9r
@user-hm1rn2ed9r 3 года назад
отлично объяснил , даже пересматривать не пришлось , лайк бро
@Antonov_Ivan.
@Antonov_Ivan. 2 дня назад
Спасибо за урок!
@realkjasonstatham
@realkjasonstatham Год назад
Спасибо
@user-bp9yp5so6e
@user-bp9yp5so6e Год назад
Восхищает не только отличная подача материала, но и Ваша точность в описании звуков разных видов оружия:D
@sergeikap7211
@sergeikap7211 10 месяцев назад
Где же ваши уроки :(
@glist119
@glist119 3 года назад
Лучшая часть понедельника
@mastervolodsobeck5176
@mastervolodsobeck5176 Год назад
Программирование хобби, сильно помогли, сенк.
@slavaukharikkim4833
@slavaukharikkim4833 3 года назад
Спасибо!!! Ещё не дошёл до этого урока, но дорогу осилит идущий
@youchinafriend
@youchinafriend 2 года назад
Дошёл?)
@slavaukharikkim4833
@slavaukharikkim4833 2 года назад
@@youchinafriend естественно )) Но столкнулся с новой проблемой )
@youchinafriend
@youchinafriend 2 года назад
@@slavaukharikkim4833 понятно))
@saints_man
@saints_man 2 года назад
@@slavaukharikkim4833 какая проблема?)
@slavaukharikkim4833
@slavaukharikkim4833 2 года назад
@@saints_man никак не могу ввести в работу новые техники. Например, знаю про ООП и про делегаты с событиями и а начать их применять на автомате не получается. Крч нужно больше практики
@dimasavukov6230
@dimasavukov6230 3 года назад
Сергей, огромное спасибо! Твои уроки это больше чем уроки..!
@user-li5ls7gu5z
@user-li5ls7gu5z 3 года назад
стрельба из лука - чпуньк! ну, очень враждебно и устрашающе)))))
@Beyfus.Yakov.Official
@Beyfus.Yakov.Official Год назад
Именно с таким звуком стреляют в Worms) Также ржал от "пыщ-пыщ" в уроке про инкапсуляцию))
@user-lx5vv3uu8u
@user-lx5vv3uu8u 3 года назад
Сергей, приветствую тебя! Благодарю!
@GODNET-qe3mu
@GODNET-qe3mu 3 года назад
Спасибо большое!
@KOKERzeroZEROseven
@KOKERzeroZEROseven Год назад
Понял материал весьма абстрактно...
@crossbow258
@crossbow258 3 года назад
А я ломал голову что такое полиморфизм, спасибо огромное, если что-то мне не ясно я к тебе обращаюсь, спасибо за уроки
@blackgolddev4023
@blackgolddev4023 3 года назад
Как всегда шикарно. Просто и понятно. Вы лучший.
@user-gn3ei9ef2q
@user-gn3ei9ef2q 3 года назад
Спасибо!
@user-ob7iy9ws6b
@user-ob7iy9ws6b 3 года назад
Спасибо большое за урок!
@rm5643
@rm5643 3 месяца назад
Спасибо за уроки. Очень крутой преподаватель! Грустно, планы озвучены еще 2 года назад, но из-за сами знаете чего они пока не сбываются. Автор я надеюсь, с Вами и Вашей семьей все хорошо.
@KlevaGameS
@KlevaGameS 6 месяцев назад
Благодарю за Урок.
@fgddgdf9437
@fgddgdf9437 3 года назад
Подача материала отличная! Сергей, вы супер! Хотелось бы побольше домашних заданий на тему ооп, чтобы материал лучше усваивался =)
@egorkalmykov4003
@egorkalmykov4003 3 года назад
Спасибо огромное за полезнейшие уроки !!!
@user-kz4xm7zk5c
@user-kz4xm7zk5c 3 года назад
Благодарствую!
@3x__
@3x__ 3 года назад
спасибо за урок!
@user-zf6ur9xc5i
@user-zf6ur9xc5i Месяц назад
Есть же интерфейсы?
@user-ch6wy5xr2g
@user-ch6wy5xr2g 3 года назад
Как вы понятно и доступно излагаете материал, огромное вам спасибо.
@user-ev5lo3dy1m
@user-ev5lo3dy1m 3 года назад
спасибо за уроки !
@ivannebyshynets8829
@ivannebyshynets8829 3 года назад
Спасибо тебе огромное, Сергей!
@ShomLZ
@ShomLZ 3 года назад
Благодарю за видео, как всегда лаконично и информативно.
@sergei8750
@sergei8750 3 года назад
Как понять когда выбирать abstract class, а когда просто класс от которого потом будем наследоваться? Разница лишь в том, что если я не сделаю override у наследника то класс родитель подставит СВОЮ РЕАЛИЗАЦИЮ методов, а абстрактный класс будет требовать чтобы обязательно было переопределение?
@alexandervotyakov
@alexandervotyakov 2 года назад
Верно. Ну и вообще нельзя сделать экземпляр абстрактного класса.
@supermegaok
@supermegaok 2 года назад
Спасибо за бесплатные и понятные уроки
@meelstorm90
@meelstorm90 3 года назад
Огромное спасибо за урок!!
@fgddgdf9437
@fgddgdf9437 3 года назад
Лучший,спасибо!
@GanovAlex
@GanovAlex 3 года назад
пальцы вверх, спасибо!!!
@user-hq7qo3rx4j
@user-hq7qo3rx4j 3 года назад
Отличное видео!
@wienswladimir6734
@wienswladimir6734 10 месяцев назад
Просто класс👍
@sergeynovikov7049
@sergeynovikov7049 3 года назад
Ура!
@slavaukharikkim4833
@slavaukharikkim4833 3 года назад
Вкусный урок!!! Я наконец дошёл до него)) спасибо за книги, Шилдт помогает)
@dizmo..
@dizmo.. 3 года назад
Спасибо за урок! Как всегда на высоте, но очень давно не было домашнего задания.
@temshik.invalid
@temshik.invalid 3 года назад
спасибо
@user-eh8dv5dh7w
@user-eh8dv5dh7w 2 года назад
коммент для продвижения
@pussysultan
@pussysultan 3 года назад
Сегодня начинаю изучать язык c# и решил посмотреть, сколько людей добралось до конца, сколько вообще оказалось настойчивых)) 2.5к людей всего. Не густо, хехех.
@MrSevenseven7
@MrSevenseven7 2 года назад
Ну как? Сам-то оказался настойчивым?
@pussysultan
@pussysultan 2 года назад
@@MrSevenseven7 мне не хватало места на диске, чтобы установить все нужное, поэтому я прекратил обучение, хотя очень хотелось дальше учиться. Но по итогу со временем я понял, что душа у меня лежит к другой сфере, коей я и занимаюсь уже. Но программирование интересно, может, как-то однажды изучу язык.
@Blackheart9511
@Blackheart9511 3 года назад
Лучший!
@adamadamesko9759
@adamadamesko9759 3 года назад
Весьма добротно, как всегда!
@undarkyt
@undarkyt 3 года назад
доброго времени суток. что делать если win-defender (Smart screen) жалуется на то, что мои проги - вирусы. что на C#, что на C++. (не хотелось бы его отключать. может есть какой-то код или упаковщик и т.д)
@user-ok8ni3dx2c
@user-ok8ni3dx2c 3 года назад
лично я отключаю
@Sabouter4ik
@Sabouter4ik Год назад
Дуже класне пояснення матеріалу, все дуже доступно і зрозуміло.
@quazar-kek2649
@quazar-kek2649 Год назад
Дякую за урок)
@leskhanmuratuly5374
@leskhanmuratuly5374 2 года назад
Спасибо вам Сергей.
@user-bq1vr3fp7q
@user-bq1vr3fp7q 2 года назад
Отличное видео, спасибо!
@ifelru
@ifelru 2 года назад
Спасибо за отличные уроки!
@blackwolf4516
@blackwolf4516 3 года назад
А как наследовать конструктор от абстрактного класса? Я понимаю, что он не наследуется. А как его тогда переопределять? Я сейчас ни на одном сайте такой информации не нашел, а VS не делает это автоматически...
@broalan
@broalan Год назад
Охрененно! Как все красиво, логично и просто, если разобраться 😂 Спасибо, Сергей за отличную подачу 🙌🏻
@user-yv1kn9mn3c
@user-yv1kn9mn3c 8 месяцев назад
Это гениально, а подача материала на высоте, как и всегда. Спасибо вам
@ionportas8227
@ionportas8227 Год назад
Спасибо!!!
@VADIM-SOLOV
@VADIM-SOLOV 2 года назад
Отличный урок! Выражаю огромную благодарность автору!
@user-rv8po7sx6y
@user-rv8po7sx6y 3 года назад
Эх встретимся через неделю ((
@PS-vj6jz
@PS-vj6jz 3 года назад
Хорошие видео)
@erikedit8323
@erikedit8323 2 года назад
Спасибо за уроки! =)
@mamankastudio379
@mamankastudio379 3 года назад
МОЛОДЕЦ ПРОДОЛЖАИИИИ ! ТЫ ПОМОЖЕН МНОООГИМ
@_chill_relax_calm4647
@_chill_relax_calm4647 2 года назад
Поддерживающий комментарий для дальнейшего развития канала. Вы чрезвычайно понятно все объясняете
@user-nh1lp8xt4j
@user-nh1lp8xt4j 2 года назад
Класс. Очень крутой урок получился.
@user-nw8sn5gf9e
@user-nw8sn5gf9e Год назад
Большое спасибо за этот урок и все предыдущие уроки , все сделано с сердцем и это чувствуеться , что учителю не все равно поймешь ты или нет . От души благодарю !
@Neroz49rujka
@Neroz49rujka 2 года назад
well done !
@oilondabeats9011
@oilondabeats9011 2 года назад
*Очень хорошо обьяснил ! спасибо*
@user-od8mn6ns2z
@user-od8mn6ns2z 2 года назад
Блин , оно всё понятно в начале урока , но когда добавляется больше строк , то немного всё равно путаюсь. Спасибо за урок! Крутая информация )
@adeya6396
@adeya6396 2 года назад
Спасибоо!
@HeIvis
@HeIvis Год назад
Как не зайдешь - всегда топовые примеры.
@user-lq6ml3rm3e
@user-lq6ml3rm3e 2 года назад
Замечательно
@user-xs3kf9tx1m
@user-xs3kf9tx1m 2 года назад
Очередной поддерживающий комментарий для развития канала. Сергей, безмерное спасибо за такую подачу материала, четко, ясно и понятно
@andruhaofficial
@andruhaofficial 3 года назад
Лайк не глядя! шутка, конечно же я посмотрел 🙃
@user-qp5gu8zg4y
@user-qp5gu8zg4y 2 года назад
Подача материала отличная! Сергей, вы супер! Хотелось бы побольше домаш
@smaks7767
@smaks7767 3 года назад
Здравствуйте Сергей! Я новичок и начал изучать С# по Вашим урокам. В принципе дается легко, думаю за 3-4 месяца осилю. Вопрос в том нужно ли после С# изучать еще языки или этого для начала будет достаточно чтобы начать что то зарабатывать и в процессе дальше учится? И еще: доступ к Вашему исходному коду сильно повлияет на процесс учебы? Заранее Спасибо!
@MacKorWoT
@MacKorWoT 3 года назад
не достаточно выучить просто синтаксис языка, надо, во первых, научиться решать поставленные задачи, и не важно что за язык вы учите, любую задачу можно решить с помощью множества разных языков программирования, тут уже вопрос удобства и рентабельности, во вторых, надо будет учить апи, фреймворки, паттерны, в зависимости от того какие задачи вы хотите решать с помощью c#
@smaks7767
@smaks7767 3 года назад
@@MacKorWoT Так с чего вообще начать учится? Никто внятно не может объяснить. Есть какая нибудь пошаговая инструкция?
@MacKorWoT
@MacKorWoT 3 года назад
@@smaks7767 ее нет, чем вы собираетесь заниматься в дальнейшем? Вот с этого и начните, попробуйте написать какое-нибудь простое приложение, и углубляйтесь постепенно. Нету профессии просто программист, в любом случае нужна какая-то специализация
@smaks7767
@smaks7767 3 года назад
@@MacKorWoT Короче говоря изучаю дальше с# попутно вникая в нюансы разработки приложений. Язык для разработки WEB после изучения C# будет легче выучить?
@MacKorWoT
@MacKorWoT 3 года назад
@@smaks7767 у веба есть и бэк и фронт, смотря что тебе надо, можно и c# использовать для этих целей, если речь о js, то да, js очень похож визуально, и не только) на c#, его будет легко выучить
@didarkamiljanow4488
@didarkamiljanow4488 2 года назад
Сергей ты Супер, классный урок все четко обяснил, спасибо за урок
@donlinoleum831
@donlinoleum831 3 года назад
ждем теперь про интерфейсы)
@musicspace8894
@musicspace8894 3 года назад
Здравствуйте Сергей! Подскажите пожалуйста как правильно заниматся по Вашим урокам я сейчас изучаю базовый С++, и хотелось бы услышать от Вас какой-нибуть совет на эту тему, как лучше практиковатся, может какие- то дополнительные материалы брать в качестве задачников или сайтов. Буду благодарен за любой совет!
@angelldark6426
@angelldark6426 2 года назад
Класс. Больше уроков связаны с играми )))
@geshoi
@geshoi 2 года назад
Боюсь скоро игры будем писать и наносить урон врагу.
@blackwolf4516
@blackwolf4516 2 года назад
Успехов вам, надеюсь что вы продолжаете вести свой канал
@shadowcode7752
@shadowcode7752 3 года назад
Абстрактные методы и в интерфейсах храняться. И сделай сравнение абстрактных классов и интерфейсов.
@tutnichego4973
@tutnichego4973 3 года назад
С функциональной точки зрения, если не требуется никакие дополнительные данных в виде полей, конструкторов и т.д. - используются интерфейсы.
@777noob777saibot
@777noob777saibot 3 года назад
Всё понятно. Но вот что я подумал .Класс предок ведь не имеет доступа к методам наследников. Тогда как, отправив объект класса Gun в параметр класса Weapon, ссылка типа Weapon имеет доступ к методу Fire наследника ? Почему при переопределении предки вдруг начинают иметь доступ к полям наследников? Кажется понял. Так как экземпляр объекта абстрактного класса создать нельзя ссылка этого класса каким-то образом может ссылаться на методы объектов наследников. А класс предок с виртуальным методом имеет доступ к переопределённым методам наследников потому что это как бы один общий метод . Но всё равно как-то странно.
@777noob777saibot
@777noob777saibot 2 года назад
Короче это только ссылка класса предка имеет доступ к полям наследников. А экземпляр предка не имеет доступ к полям наследников. В параметрах class Player { Shoot( Weapon weapon){} } Weapon weapon - это только ссылка, а не объект. Чтобы она стала объектом класса Weapon нужно сделать так Weapon weapon = new Weapon(); и теперь эта ссылка ссылается на объект типа Weapon. Если создать Gun gun = new Gun(); и отправить в параметры Shoot class Player { Shoot( Weapon weapon) { weapon.Shoot() } } то эта ссылка превращается Player player = new Player(); Player.Shoot(new Gun() ); Weapon Weapon = new Gun() // в это объект наследника можно создать через ссылку класса предка.
@DonnaDinaMusic
@DonnaDinaMusic 2 года назад
вы хороший 🥺
@user-vk8uz5zt4d
@user-vk8uz5zt4d Год назад
великолепно. И массив типов данных между делом, и сама выполненная реализация абстрактного класса. Похоже на централизованное управление наследниками с базового класса. Честно говоря и в ранее упомянутом Троелсоне и Шилдте такого уровня развёрнутых примеров не было, все как-то слишком академично, сухо, мало листингов. Поэтому особой пользы чтение этих книг не принесло (размазанная теория не давала точечно изучить и отладить изучаемые вещи). Здесь же дается самое главное, сам образ мышления программиста. Показана красота решения казалось бы простейшей задачи, так чтобы оно было легко управляемым и самое главное легко поддерживаемым. Что-то примерно подобное я встречал лишь в практикуме c# Зиборова, там тоже присутствует простота, эффективность и лаконичность кода.
@TheHardPotter
@TheHardPotter 3 года назад
Для полноты картины надо было еще в player добавить свойство health и метод hit {health - damage}
@user-zy2kg7dk7e
@user-zy2kg7dk7e 3 года назад
Ребят, подскажите пожалуйста. Скачал VS Code вместо Visiol Studio 2019. Будет ли разница в изучении C#?
@TheHardPotter
@TheHardPotter 3 года назад
Если хочешь по хардкору по можно и с code (очень много придется использовать командной строки). А вообще студия + решарпер самое удобное средство для быстрой работы.
@DonnaDinaMusic
@DonnaDinaMusic 2 года назад
будет разница если комп слабый, на моём вижуал студио ОЧЕНЬ лагает, слишком ресурсоёмкая, в вскоде всё норм
@tesarotawer4390
@tesarotawer4390 3 года назад
Еее, еще один топ видосик от топ человека!) Я как посмотрел твое видео про книги по с#, у меня в голове появился вопрос. Ты случаем не делаешь материал по книге Троелсена и Джепикса?)
@Shuhret
@Shuhret 3 года назад
Спасибо вам за ваши отличные уроки! Будут ли в уроки по WPF?
@GODNET-qe3mu
@GODNET-qe3mu 3 года назад
Си шарп плюшки
@Sticksys
@Sticksys 3 года назад
ну почему не вы преподаете у меня шарп :(
@user-rv7ch1zv9e
@user-rv7ch1zv9e 3 года назад
в чем разница между абстрактным классом и интерфейсом?
@MacKorWoT
@MacKorWoT 3 года назад
в том, что абстрактный класс, это обычный класс, в котором можно делать все тоже самое, что и не в абстрактном, за исключением создания его экземпляра, а интерфейс может содержать только абстрактные методы, свойства и делегаты, и интерфейсы поддерживают множественное наследование, только еще 1 момент, что в C# 9 завезли возможность сделать базовую реализацию прямо в интерфейсе, но это не стоит использовать, если нету критической необходимости, в 99.9% случаев ее нет)
@user-zw4dh5gn6b
@user-zw4dh5gn6b Год назад
Console.WriteLine(GetType().Name+Damage); почему не сказать, что у гет тайп неявно вызывается экземпляр текущего класса для получения типа?
@tutnichego4973
@tutnichego4973 3 года назад
Следующий урок будет по интерфейсам, получается.
@illashisko9804
@illashisko9804 Год назад
когда foreach
@at9s598
@at9s598 Год назад
Что?
@kantoshi9890
@kantoshi9890 Год назад
когда try catch
@Crystal-kt3ig
@Crystal-kt3ig 3 года назад
Что делать если хочешь стать программистом(gamedev), но ненавидишь физику?
@ivankorchmit6893
@ivankorchmit6893 3 года назад
А физика тут причем?
@Crystal-kt3ig
@Crystal-kt3ig 3 года назад
@@ivankorchmit6893 ну тип в инете говорят то что физика нужна
@ivankorchmit6893
@ivankorchmit6893 3 года назад
@@Crystal-kt3ig Не слушай всяких придурков в Интернете, открывай истину сам. Вообще говорят, что чтобы стать геймдевелопером надо школу закончить на одни пятерки.
@Crystal-kt3ig
@Crystal-kt3ig 3 года назад
@@ivankorchmit6893 Ок
@naboru1000
@naboru1000 Год назад
Местами нужно скорость воспроизведения поставить 0.75
@user-gm5rn6po7h
@user-gm5rn6po7h 3 года назад
+
@erikedit8323
@erikedit8323 2 года назад
10:23 а как с помощью for это сделать?) Ведь item в foreach(т.е. его тип (var)) - это weapon, а в for переменная i это int
@ilya9261
@ilya9261 2 года назад
индексы у элементов массива целые
@byterytnc8763
@byterytnc8763 3 года назад
Привет, слушай , можешь в каком-нибудь ролике уделить пару минут конкотенации строк с помощью "$", а то об этом остальные объясняют как-то непонятно... сложно что-ли)
@vitor_corve
@vitor_corve 3 года назад
Просмотри плейлист, очень часто есть примеры использования, где все наглядно и понятно.
@TheHardPotter
@TheHardPotter 3 года назад
Почему решарпер не используете?
@bomb4ik
@bomb4ik 3 года назад
Можно ДЗ, пожалуйста.
@denzeroneYT
@denzeroneYT 2 года назад
Давай я свои скину как раз на эту тему хапхпах
@unitypie3355
@unitypie3355 2 года назад
Пока не понятно зачем именно использовать что-то абстрактное...
@dzmitrystudy9514
@dzmitrystudy9514 Год назад
Да, думаю на реальных проектах при разработке это редко используется т.к. очень сильно запутывает код
@FeinGe
@FeinGe Год назад
@@dzmitrystudy9514 Шутишь? В реальных проектах это используется постоянно. Запутывание только в маленькой программке, когда у тебя уже полноценная программа это наводит порядок и ее дальнейшее масштабирование, без этого твоя программа будет плохо читабельна и когда захочешь ее расширять столкнешься с массой проблема, почитай про паттерны, например SOLID.
@denisnjar5369
@denisnjar5369 2 года назад
я так и не понял в чем смысл его, ведь можно же насоздавать кучу конкретных методов и задействовать перегрузку. кода что так, что по-другому будет дофига, но в первом случае будет полный контроль над всеми данными.
@alexandervotyakov
@alexandervotyakov 2 года назад
Когда новый программист решит добавить своё оружие, то он используя абстрактный класс сразу поймет, какие методы обязательны.
@mikola_belarus
@mikola_belarus 3 года назад
У твоих уроков один минус, слишком быстро кончаются
Далее
Абстрактный класс в ООП
10:28
Просмотров 40 тыс.