Тёмный

#7 Разница между абстрактным классом и интерфейсом. Ответ на вопрос собеседования C# / .Net 

Andrey Shyrokoriadov
Подписаться 4,3 тыс.
Просмотров 8 тыс.
50% 1

#абстрактныйкласс #интерфейс #SOLID #ООП #interface #abstractclass #andriyshyrokoriadov
В видео представлены отличия абстрактного класса от интерфейса, а также указано какие недостаки абстрактных классов можно решить, используя интерфейсы.
Подписывайтесь на канал [программирование, путешествия]: / @andreyshyrokoriadov
0:15 - ограничения абстрактных классов
1:55 - преимущества интерфейсов
2:10 - принцип единственной ответственности
2:25 - принцип разделения интерфейсов
Текст к фильму доступен по ссылке:ashyrokoriadov...

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

 

11 сен 2024

Поделиться:

Ссылка:

Скачать:

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

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 11   
@TheFaust182
@TheFaust182 3 года назад
Большое спасибо за то что Вы делаете.
@asyncawait2839
@asyncawait2839 2 года назад
Спасибо, полезно при подготовке к собеседованию.
@samnihao6943
@samnihao6943 3 года назад
«Если мы наследуем абстрактный класс, то кроме абстрактных методов, которые необходимо переопределить, мы получаем доступ к остальным членам базового класса». Другими словами мы наследуем интерфейс (набор сигнатур и возвращающих значений методов) и реализацию. Но в C# 8, в интерфейсах, появилась возможность определять реализацию по-умолчанию. Что немного размывает различие между абстрактным классом и интерфейсом. Получить доступ к этой реализации мы можем, только после приведения к интерфейсному типу (явная реализация метода интерфейса). «При наследовании от абстрактного класса, мы получаем весь функционал этого класса, кроме членов, обозначенных модификатором доступа private». Мы их наследуем, они просто не доступны (либо доступны с помощью рефлексии). Было бы хорошо еще упомянуть о связи интерфейса и полиморфизма, о принципе Inversion of Control, в ASP контейнера Dependency Injection работают с интерфейсами. Ну и как бонус можно упомянуть, то что я называю справочной информацией: в абстрактном классе могут быть конструкторы и деструкторы. В интерфейсе нет. В абстрактных классах могут быть константы. В интерфейсе нет. И тд.
@KOCadm
@KOCadm 3 года назад
Можно про рефлексию тут подробнее?))
@Valentin_PCMinsk_by
@Valentin_PCMinsk_by 2 года назад
Спасибо. Так хорошо, что хочется продолжения. Для понимания утилитарных вещей важно понимание периферийных связей. Ну лично для меня обучение так работает..p.s. сп за плейлист.
@hop173
@hop173 Год назад
Ещё есть краткое но до сих пор актуальное отличие. Мы можем наследоваться только от одного абстрактного класса но можем реализовывать несколько интерфейсом. До сих пор люблю этот ответ)
@sergeys5270
@sergeys5270 2 года назад
Спасибо за Ваш труд
@user-zq6bj2wv6m
@user-zq6bj2wv6m 2 года назад
Спасибо за ваш труд. Но я вообще не понял в чем различия. Так же ваши прописи -не разборчивы, картинка замылена.
@AndreyShyrokoriadov
@AndreyShyrokoriadov 2 года назад
Спасибо за комментарий. Если что то неразборчиво, то можно здесь прочитать: ashyrokoriadov.github.io/c_sharp_questions/2021/01/27/Difference_between_abstract_class_and_interafce.html
@ivannebyshinets5682
@ivannebyshinets5682 2 года назад
А по существу, можно лиоперируя интерфейсами вообще отказаться от использования абстрактных классов?
@AndreyShyrokoriadov
@AndreyShyrokoriadov 2 года назад
Можно. Всё зависит от конкретной ситуации. На сколько я знаю одной из новых фичей C# является использование реализаций по умолчанию в интерфейсах. Ранее абстрактный базовый класс использовался именно для декларации имплементаций по умолчанию, а классы наследники, если было, надо надписывали эти имплементации. Однако если имплементации по умолчанию используют зависимости, то мне кажется такие зависимости будет проблематично оформить в интерфейсах (Хэлпер классы со статическими методами не предлагать =)).
Далее
Вопрос Ребром - Булкин
59:32
Просмотров 998 тыс.
Записи, рекорды, records - C# 9, .NET 5
8:36
Вопрос Ребром - Булкин
59:32
Просмотров 998 тыс.