Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2015, 17:02   #1
Razor007
Пользователь
 
Регистрация: 04.02.2015
Сообщений: 16
Сообщение Помогите разобраться с интерфейсами

Доброго времени суток уважаемые программисты.
Я давно изучаю C# и когда добрался до интерфейсов...... я так и не понял для чего они нужны, и в чем их существенные отличия от абстрактного класса? Помогите пожалуйста, а то от того, что не понимаю аж зло берёт..

З.Ы Простите если не в тот раздел....
Razor007 вне форума Ответить с цитированием
Старый 04.02.2015, 17:19   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Попробуйте теорию по ООП поизучать (без привязки к языку).

Отличаются например тем, что нельзя наследоваться от нескольких классов, а вот несколько интерфейсов реализовать можно.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 04.02.2015, 17:28   #3
Razor007
Пользователь
 
Регистрация: 04.02.2015
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Попробуйте теорию по ООП поизучать (без привязки к языку).

Отличаются например тем, что нельзя наследоваться от нескольких классов, а вот несколько интерфейсов реализовать можно.
Так посути их можно заменить обычными методами, и иерархиями классов?! Или я совсем плохой и не чего не понимаю?
Razor007 вне форума Ответить с цитированием
Старый 04.02.2015, 19:32   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Основной посыл в том, что абстрактный класс показывает чем является наследник. Интерфейс показывает что "наследник" (класс, реализующий интерфейс) умеет.
Причем можно разделить поведение "наследника" для каждого интерфейса.
Возьмём интернет-магазин. Для товара логично показывать не размеры упаковки, а размеры конкретной модели принтера или системного блока. Для компании-перевозчика наоборот не важны эти размеры и масса нетто, им важны габариты упаковки и масса брутто. Итак нам нужно перевезти кактус, принтер и попугая. Врядли их имеет смысл наследовать от одного класса и вряд ли у них много общего, а вот реализовать один интерфейс, отвечающий за указание массы и габаритов для перевозки - это можно. Транспортной компании всё равно нужны ограниченные данные и скорость печати принтера им не интересна, равно как и порода попугая.
В языках, умеющих множественное наследование, иногда на интерфейсы забивают и пользуются абстрактными классами без каких-либо членов, свойств, реализованных методов. Пример такого языка: С++. В шарпе без интерфейсов никак, ибо нет множественного наследования. По мере пользования ООП поймёте как лучше проектировать классы и что выносить в интерфейсы.
pu4koff вне форума Ответить с цитированием
Старый 04.02.2015, 20:16   #5
Razor007
Пользователь
 
Регистрация: 04.02.2015
Сообщений: 16
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
Основной посыл в том, что абстрактный класс показывает чем является наследник. Интерфейс показывает что "наследник" (класс, реализующий интерфейс) умеет.
Причем можно разделить поведение "наследника" для каждого интерфейса.
Возьмём интернет-магазин. Для товара логично показывать не размеры упаковки, а размеры конкретной модели принтера или системного блока. Для компании-перевозчика наоборот не важны эти размеры и масса нетто, им важны габариты упаковки и масса брутто. Итак нам нужно перевезти кактус, принтер и попугая. Врядли их имеет смысл наследовать от одного класса и вряд ли у них много общего, а вот реализовать один интерфейс, отвечающий за указание массы и габаритов для перевозки - это можно. Транспортной компании всё равно нужны ограниченные данные и скорость печати принтера им не интересна, равно как и порода попугая.
В языках, умеющих множественное наследование, иногда на интерфейсы забивают и пользуются абстрактными классами без каких-либо членов, свойств, реализованных методов. Пример такого языка: С++. В шарпе без интерфейсов никак, ибо нет множественного наследования. По мере пользования ООП поймёте как лучше проектировать классы и что выносить в интерфейсы.
Спасибо... Теперь стало хоть не много понятнее....
Razor007 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться Maserati Помощь студентам 1 27.11.2013 13:29
Ошибка при работе с интерфейсами alexprey Общие вопросы Delphi 15 10.08.2011 18:54
компоненты для работы с интерфейсами IExtractImage Loveb Компоненты Delphi 2 01.12.2010 10:28
Неприятная ситуация с самоуничтожающимеся интерфейсами Altera Общие вопросы Delphi 12 07.09.2010 06:31
статья - Взаимодействие с сетевыми интерфейсами в Linux Pblog Обсуждение статей 0 23.06.2010 05:13