|
|
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
MAULERДобрый день. В принципе с ООП знаком. Понимаю что есть наследование, инкапсуляция и полиморфизм. Столкнулся с такой новой для меня штукой как интерфейсы . Нарыл кучу примеров и пояснений, но до сих пор в голове не могу сформировать устойчивого и ясного понимания. Понимаю что интерфейс содержит в себе как бы декларацию методов, а реализация выполняется внутри методов классов "вызывающих" данный интерфейс. Причем внутри класса (использующий интерфейс) через @Override происходит переопределение метода с его реализацией (попросту пишется собственно код метода). Вопрос вот в чем: что мне мешает вообще не использовать интерфейсы? Ведь внешне, в плане вызова метода у объекта класса ничего не меняется?! Что мне мешает не использовать @Override а просто сделать метод внутри класса и использовать его? Давай так - просто возьми себе за практику использовать интерфейсы везде . Начинай проектирование любого класса с интерфейса ... если тебе будет нужен в процессе абстрактный класс вводи смело , но от интерфейсов не надо отказаться ... везде в первую очередь создавай интерфейс ... и потом уже по необходимости абстрактный класс , который будет имплементировать этот интерфейс ... просто делай так всегда - и не задавай вопросов ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2015, 17:58 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Atum1, Уверен что ему когда нибудь уже понадобится базовый класс? )))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2015, 18:11 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
DoSOfRedRiverА вообще, хороший пример есть на сайте оракла, по-моему: он хороший именно в своей области. Не буду говорить узкой)), но на пальцах: - интрефейс это контракт между разрозненными группами или фирмами - т.к. они разрознены _административно_, а не концептуально или по БЛ, то необходимы заглушки-контракты чтобы удобнее писать. Но, если архитектор системы один, то ему не с кем договариваться. Он пойдёт от ООП-UML. При желании, абстрактный базовый класс может выполнить ту же роль контракта. Их даже передают бывает для компиляции программ, чтобы исходники (платные) не передавать)). Есть SOAP, тоже ничего себе контракт на другом уровне. .... Ну а в принципе, пример понятен. Нужно сделать одно поведение для разрозненных объектов и упростить жизнь менеджерам. Главное не натягивать данный пример на всё подряд. Это не Мода-осень 2015. imho ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2015, 20:37 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Atum1Давай так - просто возьми себе за практику использовать интерфейсы везде . я вижу ты читал ссылку http://www.quizful.net/post/razlichie_v_primenenii_interfeysov_i_abstraktnih_klassov но ничего там не понял. - где будем размещать поле Points - точки фигуры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2015, 20:48 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Atum1Давай так - просто возьми себе за практику использовать интерфейсы везде. О, работники сурового интерпрайза подтянулись :) В ООП любой класс должен выполнять какую-то функцию. В т.ч. интерфейс. Класс/интерфейс- абстракция. И он должен не только иметь ОДНУ ответственность, но и ИМЕТЬ ответственность. А подход "всегда делай интерфейс" приводит к созданию кучи интерфейсов, которые не имеют никакой ответственности вообще. При разработке кода "для себя" (т.е. такого, который используется строго внутри проекта) надо следовать принципам "simple code" - т.е. делай как есть, потом отрефакторишь, чтобы было хорошо. Не нужен интерфейс- не делай. Нужен будет- выделишь, благо дело современные IDE это делают сами. Не нужен- проще будет код понять. Создавать же библиотеки "для всех" (пусть даже это в пределах кампании) всё одно не подпустят пока- там да, там надо хорош продумывать всё, чтобы не родить уродцев типа java.awt.Point. Atum1просто делай так всегда - и не задавай вопросов ;) Нет, надо просто понять базовые принципы ООП, тогда SOLID и т.п. будет видится тривиальщиной (хотя нет, буковка D там не следует из принципов ООП). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2015, 08:08 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123Atum1Давай так - просто возьми себе за практику использовать интерфейсы везде . я вижу ты читал ссылку http://www.quizful.net/post/razlichie_v_primenenii_interfeysov_i_abstraktnih_klassov но ничего там не понял. - где будем размещать поле Points - точки фигуры? List<Points> getPoints() - в интерфейсе . сами точки в абстрактном классе :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2015, 13:23 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
авторсами точки в абстрактном классе :) === ну вот видишь))))) LOL авторList<Points> getPoints() - в интерфейсе === зачем? 1. Оверхед 2. Точки приватные. Их никто пока не открывал. Т.к. возможно надо будет перекрыть в наследниках. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2015, 13:33 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123авторсами точки в абстрактном классе :) === ну вот видишь))))) LOL авторList<Points> getPoints() - в интерфейсе === зачем? 1. Оверхед 2. Точки приватные. Их никто пока не открывал. Т.к. возможно надо будет перекрыть в наследниках. Удачи ! прям контратака тракслера :) ну придется на каком то этапе для того чтобы скрыть интерфейсы отказаться от тупого линейного наследования и перейти к Композиции . «композиция всегда лучше наследования» (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2015, 15:06 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Atum1прям контратака тракслера :) === ))) ну дак у меня разряд). ну придется на каком то этапе для того чтобы скрыть интерфейсы отказаться от тупого линейного наследования и перейти к Композиции . «композиция всегда лучше наследования» (с) ===== это я уже пас. Есть три кита ООП. Пытаться сказать какой из 3-х тупой, а какой лучше второго без меня)) не будем додумывать. Главное начали от печки - от abstract class. А interface по надобности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2015, 15:16 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123не будем додумывать. Главное начали от печки - от abstract class. А interface по надобности. ну так есть же еще Миксины и трейты че мы только на abstract и interface застряли :)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2015, 15:22 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Atum1, ну дак много есть интересного. Вон доллар за окном дорожает). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2015, 15:29 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123Atum1, ну дак много есть интересного. Вон доллар за окном дорожает). ОФФ так это хорошо :) "Путин считает что обесценивание рубля нам выгодно ..." (с) - это не доллар растет , а рубль укрепляется :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2015, 15:34 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Atum1, )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2015, 15:37 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Atum1Давай так - просто возьми себе за практику использовать интерфейсы везде . Начинай проектирование любого класса с интерфейса ... если тебе будет нужен в процессе абстрактный класс вводи смело , но от интерфейсов не надо отказаться ... везде в первую очередь создавай интерфейс ... и потом уже по необходимости абстрактный класс , который будет имплементировать этот интерфейс ... просто делай так всегда - и не задавай вопросов ;) Так можно родить новый антипаттерн. Под названьем "засилие интерфейсов". Или Interfaces dominance. И следующие лет 10 бороться с ним вводя новые сущности типа "фасадных" интерфейсов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2015, 18:14 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
maytonТак можно родить новый антипаттерн. Под названьем "засилие интерфейсов". Или Interfaces dominance. И следующие лет 10 бороться с ним вводя новые сущности типа "фасадных" интерфейсов. У меня такое подозрение, что интерфейсы в Java ввели, потому что не было header-файлов, как в C/C++. Поэтому писать для каждого класса интерфейс, это стиль написания программ на C/C++. <:o) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2015, 06:20 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
mad_nazgulmaytonТак можно родить новый антипаттерн. Под названьем "засилие интерфейсов". Или Interfaces dominance. И следующие лет 10 бороться с ним вводя новые сущности типа "фасадных" интерфейсов. У меня такое подозрение, что интерфейсы в Java ввели, потому что не было header-файлов, как в C/C++. Чито? header-файл в C это костыль в отсутствии модульности. interface в java - костыль в отсутствии множественного наследования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2015, 08:33 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
mad_nazgulmaytonТак можно родить новый антипаттерн. Под названьем "засилие интерфейсов". Или Interfaces dominance. И следующие лет 10 бороться с ним вводя новые сущности типа "фасадных" интерфейсов. У меня такое подозрение, что интерфейсы в Java ввели, потому что не было header-файлов, как в C/C++. Поэтому писать для каждого класса интерфейс, это стиль написания программ на C/C++. <:o) Ошибочка вышла. Вввели потому что ООП а не аналогии с С++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2015, 09:02 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
maytonОшибочка вышла. Вввели потому что ООП а не аналогии с С++. Если меня память не подводит, то в SmallTalk никаких интерфейсов не было. Да и в самой парадигме ООП нет понятие интерфейсов. А вот в C++ с которых "слизывали" Java. "Java это C++ только лучше" Были заголовки, которые несли смысловую нагрузку такую же как сейчас несут интерфейсы в Java. <:o) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2015, 09:10 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
mad_nazgulmaytonОшибочка вышла. Вввели потому что ООП а не аналогии с С++. Если меня память не подводит, то в SmallTalk никаких интерфейсов не было. Да и в самой парадигме ООП нет понятие интерфейсов. А вот в C++ с которых "слизывали" Java. "Java это C++ только лучше" Были заголовки, которые несли смысловую нагрузку такую же как сейчас несут интерфейсы в Java. <:o) Это передёргивание правды. На Java оказали влияние около 10 языков и парадигм. Не стоит выпячивать или натягивать С++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2015, 09:20 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
maytonЭто передёргивание правды. На Java оказали влияние около 10 языков и парадигм. Не стоит выпячивать или натягивать С++. Про header-interface это человек либо не знает C/C++, либо не знает java. Но справедливости ради- у меня чёткое ощущение, что Гослинг действительно ничего, кроме С++, не знал. Потому что он перетащил те баги С++, которые были связаны с бинарной совместимостью С и С++, в java, при том, что был eiffel, который (при всей его неуклюжести) содержал все идеи ООП (кроме метаклассов) в законченном виде (собственно все последующие новшества- только из ФП). Для доказательства достаточно того факта, то для переменной доступ на чтение и запись совпадает... Ну и прочее - return, main, "область видимости пакет"- бр... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2015, 10:07 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Alexey Tomininterface в java - костыль в отсутствии множественного наследования. +1! люто плюсую! все остальное можно сделать абстрактным классом. для примера: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. на абстрактных функцию, переменную и т.д. не реализуешь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2015, 10:50 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
mad_nazgul, я те заголовки никогда не любил...по практичности. Уж слишком они были объёмные и где то там лежали....)) отдельно от кода. Потом на Delphi оооочень понравилась компактность кода ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2015, 10:57 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
am_sasaна абстрактных функцию, переменную и т.д. не реализуешь здесь больше не о к оде компилятора рассуждаем. А о _прикладном_ коде. Т.е. там где БЛ и ближе к пониманию простыми программистами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2015, 11:23 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39033258&tid=2125025]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
196ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 540ms |

| 0 / 0 |
