|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.02.2015, 17:02 | #1 |
Пользователь
Регистрация: 04.02.2015
Сообщений: 16
|
Помогите разобраться с интерфейсами
Доброго времени суток уважаемые программисты.
Я давно изучаю C# и когда добрался до интерфейсов...... я так и не понял для чего они нужны, и в чем их существенные отличия от абстрактного класса? Помогите пожалуйста, а то от того, что не понимаю аж зло берёт.. З.Ы Простите если не в тот раздел.... |
04.02.2015, 17:19 | #2 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Попробуйте теорию по ООП поизучать (без привязки к языку).
Отличаются например тем, что нельзя наследоваться от нескольких классов, а вот несколько интерфейсов реализовать можно.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
04.02.2015, 17:28 | #3 |
Пользователь
Регистрация: 04.02.2015
Сообщений: 16
|
Так посути их можно заменить обычными методами, и иерархиями классов?! Или я совсем плохой и не чего не понимаю?
|
04.02.2015, 19:32 | #4 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Основной посыл в том, что абстрактный класс показывает чем является наследник. Интерфейс показывает что "наследник" (класс, реализующий интерфейс) умеет.
Причем можно разделить поведение "наследника" для каждого интерфейса. Возьмём интернет-магазин. Для товара логично показывать не размеры упаковки, а размеры конкретной модели принтера или системного блока. Для компании-перевозчика наоборот не важны эти размеры и масса нетто, им важны габариты упаковки и масса брутто. Итак нам нужно перевезти кактус, принтер и попугая. Врядли их имеет смысл наследовать от одного класса и вряд ли у них много общего, а вот реализовать один интерфейс, отвечающий за указание массы и габаритов для перевозки - это можно. Транспортной компании всё равно нужны ограниченные данные и скорость печати принтера им не интересна, равно как и порода попугая. В языках, умеющих множественное наследование, иногда на интерфейсы забивают и пользуются абстрактными классами без каких-либо членов, свойств, реализованных методов. Пример такого языка: С++. В шарпе без интерфейсов никак, ибо нет множественного наследования. По мере пользования ООП поймёте как лучше проектировать классы и что выносить в интерфейсы. |
04.02.2015, 20:16 | #5 | |
Пользователь
Регистрация: 04.02.2015
Сообщений: 16
|
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите разобраться | 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 |