Интерфейсы и с чем их едят

В этой статье буду рассмотрены основные моменты при использовании интерфейсов.
Перед прочтением рекомендуется ознакомиться с наследованием классов и преобразованиями типов объекта.
Статья
23 10.3K
9
Да банально позволяет "выдергивать" из класса только тот функционал, который нужен.
26
Важное свойство интерфейса в том, что он ограничивает доступ к реализации класса. Классу А, работающему со сложным классом Б, не обязательно знать о всех методах и свойствах класса Б. Однако, если класс Б реализовывает определенный интерфейс, класс А может об этом знать, и вместо того чтобы работать с многочисленными методами класса Б, он может общаться с ним через интерфейс, получив доступ только к тем методам, которые ему важны.
Есть даже простой пример на реальных объектах - корпус вашего системника. Внутри системника куча функционала, разъемов, проводов и т.д., однако сам корпус обеспечивает вам доступ к самым важным элементам - кнопкам управления и выходам для различных девайсов. Представьте себе если бы порт USB находился на самой материнке, и чтобы найти его, вам приходилось бы высматривать его с десятков других разъемов на материнке.
28
GeneralElConsul, интерфейс это класс в котором все методы абстрактные и публичные (и прочие искусственные фичи наподобие множественного наследования)
но тут судя по вопросу человек не понимает не в чём отличие абстрактного класса от интерфейса а применение полиморфизма
29
Ну отсутствие состояния и реализации методов (что и позволяет множественно наследоваться) и отличает интерфейс от абстрактного класса.
9
Да просто человек сказал, что он не понимает смысл интерфейсов, а вы ему давай писать то, для чего и обычный абстрактный класс сгодиться, не затрагивая сути его существования - так он точно не изменит свою точку зрения.
28
Doc, тут люди не понимают зачем нужен полиморфизм а ты про контракты и состояния
ну а вообще если говорить простым языком (т.е. для полных нубов) то интерфейсы нужны для того чтобы убедится что класс имеет реализацию необходимых методов
29
Множественное наследование просто побочный эффект. Интерфейс просто объявляет контракт. Важное свойство интерфейса в том что он не имеет собственного состояния.
9
Хм, а давайте подумаем, почему Майкрософт сделали и интерфейс IComparer, и класс Comparer. Ну да, наверное, чтобы в случае класса его наследовали когда хочется унаследовать именно класс (настроение такое - хочу наследовать классы сегодня!). А в случае интерфейса - когда, увы, уже наследуешь один класс и для второго класса места нет, поэтому есть возможность наследовать интерфейс.
Ведь вся суть использования интерфейсов именно в том, что именно для них поддерживается множественное наследование, да.
Хотел бы слепить такой серверный мультиплеер:
•Игроки имеют обзор от 1/3 лица и могут выложить предмет (физика не обязательна), главное чтоб сервер запоминал каждый раз при выключении на какое место положили вещь и чтобы она там могла лежать вечно либо в контейнер.
•Физика и бои пойдут на уровне WoW.
•Админ сервера…
Вопрос
2 1.1K
9
Насколько помню первоначальный вопрос - Unity или Unreal. Для этих целей подойдет и то, и то. На самом деле люди часто выбирают именно тот движок, который им больше нравиться, плюя на то, подходит он чуть больше или чуть меньше для их задач - если умеешь работать с двиглом, то сможешь сделать практически все. Поэтому желательно попробовать оба или хотя бы посмотреть видосы, понять, какой тебе нравиться.
А если говорить про удобство изучения с нуля, то, естественно, это Unity. Я бы рекомендовал начать пробовать с него. Если он тебе понравиться, то и пробовать Unreal смысла особого нет, тем более то, что ты писал в первоначальном варианте вопроса - чисто случай, для которого идеально подходит Unity.
22
Если язык программирование сложен то Unity поможет если не хотите с нуля писать...