Автор Dmitryj задал вопрос в разделе Другие языки и технологии
Зачем нужны интерфейсы в ООП. C# и получил лучший ответ
Ответ от Пётр Добрынин[гуру]
ты конечно можешь описать нужный тебе метод в каждом классе наследнике. Но вот представь себе ситуацию, у тебя массив экземпляров твоих классов, естественно их все прийдётся привести к object и как ты на массиве object'ов вызовешь свой метод? только рефлексией. А имея массив с элементами типа IInterface ты сможешь на них вызвать любой метод объявленный в этом интерфейсе, этого эффекта конечно можно было добиться используя абстрактный класс или унаследовать их все от одного конкретного класса, но т. к в c# нет множественного наследования, МС не захотела так ограничивать разработчиков и ввела интерфейсы.
странно что вопрос задан здесь, а не в техсаппорте майкрософта!
Интерфейсы как раз нужны чтобы разработчик не забыл реализовать метод в классе. Интерфейс является своего рода требованием к реализации, он требует от класса к которому был применен обязательной реализации описанных методов.
Предположим такую ситуацию: "Я вот тут пишу прогу, поможешь? У меня метод должен сортировать масивы. Ему передаётся класс-сортировщик и массив. Я написал пока только сортировку пузырьком. Напиши мне сортировку вставками. " - Второй программист никогда не видел программу первого. Если он напишет такой класс-сортировщик, то первый программист не сможет его использовать, т. к. его метод принимает совершенно другой тип. Тогда придётся писать другой метод, для этого типа. Но в реальности таких типов может быть сотни и тысячи. Эту проблему как раз и решают интерфейсы.
Пример очень простой, но наглядный. На самом деле их применение куда шире и они очень полезны. Например для написания плагинов сторонними разработчиками, для расширяемости приложения и т. д.
У меня ресивер GS 7300 что с ним можно сделать что бы показывал Mpeg4 СУПЕР ОПТИМУМ? Может кто чего пробовал?
Cпутниковый ресивер DRE-7300 имеет чип STI 5518 позволяющий осуществлять основные функции обработки
подробнее...
Чем отличается коренным образом класс от структуры в c#
class C {
public int Value { get; set; }
public C(int value) {
Value = value;
}
подробнее...
Люди, а есть-ли визуальная среда разработки на C++?
C++ Builder (по-русски обычно произносят [си-плюс-плюс би́лдэр] ) — среда быстрой разработки
подробнее...
В чем отличие C Sharp, С, и С++?
C - язык, придуманный в начале 70-х, с соответствующими концепциями. С тех пор вносились улучшения,
подробнее...
Не могу опредилиться между C++ и C#, с чего начать программировать. Вот знаю например что в C++ нужно самим управлять...
Мой путь был таков. .
1 - Школа - Basic. На нём нам хорошо объяснили основы алгоритмизации
2
подробнее...
microsoft visual c++2005 redistributable что это? зачем он мне нужен? что будет если я его удалю?
Например некоторые программы не работают без определенной версии Microsoft Visual C++
подробнее...
Visual Basic vs C++
Защита информации - это экономический фак, насколько мне известно. 🙂 Учите VSB, потом
подробнее...
C++ Visual Studio 2010 Express
Строчка необходима, чтобы приостановить работу программы. Программа ждёт пока пользователь прочтёт
подробнее...
Можно ли на C++ написать сложные программы? Как?
Можно. Те книги которые тебе попадались были для начинающих, вот в них и показали азы. В
подробнее...
Какой язык программирования лучше изучать: C++ или C# ?
C# проще, C++ универсальнее, поддерживается на многих платформах, скомпилированные с него программы
подробнее...