За последние 24 часа нас посетили 43749 программистов и 7019 роботов. Сейчас ищут 1466 программистов ...

Полиморфизм на интервью

Тема в разделе "PHP для новичков", создана пользователем activity, 14 мар 2023.

  1. activity

    activity Новичок

    С нами с:
    14 мар 2023
    Сообщения:
    1
    Симпатии:
    0
    Как обычно надо отвечать на интервью когда спашивают про полиморфизм, я могу примером сказать что это когда у нас есть класс и подкласс и мы переопределили какой-то метод.
    Но как это правелинее сформулировать?
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.129
    Симпатии:
    1.223
    Адрес:
    там-сям
    Полиморфизм очень широкое понятие и есть не только в ООП, но и, скажем, в биологии. Так что разговор можно вести с разных позиций.

    Если бы я был интервьювером, меня бы интересовало понимаешь ли ты для чего он может использоваться, а не какие-то строгие формулировки. А польза от него такая: в одном и том же коде можно использовать экземпляры разных классов, если они наследуют от одного и того же базового класса и за счет этого можно легко расширять функционал.
     
  3. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    Нынче, однако не столько наследование от класса, сколько реализация интерфейсов во главе угла.
     
  4. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    А по мне реализация интерфейса похожа на купленную лицензию. Кто-то за тебя написал название метода, а ты вынужден его упоминать при использовании. Хуже - франшиза. Обязательно реализовать все объявленные методы.
     
    aliensgroup нравится это.
  5. dantemgs

    dantemgs Новичок

    С нами с:
    24 дек 2022
    Сообщения:
    47
    Симпатии:
    9
    Зато есть имя бренда, instanceof
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.129
    Симпатии:
    1.223
    Адрес:
    там-сям
    не во всех ЯП есть такая конструкция как интерфейс. но да, можно говорить что у двух классов один интерфейс если они наследуют от одного и того же суперкласса. это уже частности. ООП может быть выражен даже в языках не имеющих слов class или interface ))
     
  7. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    Интерфейс, по сути - абстрактный класс, в котором нет полей и все методы абстрактные
    --- Добавлено ---
    Ну ты же не просто так используешь интерфейс. Значит ты хочешь передавать экземпляры своего класса в какой-то код, ожидающий интерфейс. И если бы ты не реализовал этот интерфейс, то ты бы не смог это сделать.

    А чтоб не нужно было реализовывать слишком много методов, есть буква I в SOLID. Interface segrigation principle
     
  8. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Получается, что в некоторых местах кода надо еще и документы показывать на право применения. Забавно и полезно. Если честно интерфейс для меня похож на талон на покупку чего-то реального в магазине. Сам ничего не производит , но право дает. Ну или на список покупок( посмотрю, ничего не забыл?).
     
  9. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.129
    Симпатии:
    1.223
    Адрес:
    там-сям
    интерфейс еще назвают "контракт". класс получает контракт на выполнение каких-то действий. типа мы нанимаем подрядчика на выполнение определённых работ по спецификации. могут быть разные исполнители, но мы знаем что они должны соответствовать заданной спецификации, поэтому любой из них может быть применён в нашем коде, требующем проведения этих работ.

    интерфейсы это развитие идеи множественного наследования. в конце концов, важно не от какого родительского класса происходит данный класс, а то что он предназначен для определенных действий.
    --- Добавлено ---
    согласен с этим :) на интервью можно об этом сказать. как и о том, что разные ЯП обладают разным набором возможностей, поэтому когда читаешь полиморфизм как его сформулировал Страуструп: один интерфейс — множество реализаций, надо понимать что здесь интерфейс это не обязательно буквально ключевое слово interface. ;)
     
  10. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    Ну вот смотри, по дефолту во фреймворке ларавел аутентификация реализуется через механизмы, которые умеют работать с SQL-базами данных.

    А теперь тебе дают задачу, в который говорят: мы хотим, чтоб всё лежало в ArangoDB (менее популярный аналог монги). Что делать? Полностью писать по новой всё, что в ларавеле написано относительно аутентификации? Не нужно, потому что в ларе есть интерфейс, отвечающий за аутентификацию, и ты можешь запросто встроить реализацию аутентификации на апи от аранги. А если завтра появится ещё какая-нибудь СуперПуперНоСКЛБД, то опять - нет проблем, реализовал под неё интерфейс - и лара с ней работает, как с родной.
     
  11. Дюран

    Дюран Активный пользователь

    С нами с:
    9 мар 2018
    Сообщения:
    291
    Симпатии:
    21
    Я б такие базовые моменты для собеседования подучил по специальной литературе, типа "Гради Буч Объектно ориентированный анализ".
    Потому что интервьюеры часто хотят услышать именно свою версию, то как они понимают.
    Вы начнете своими словами как вы понимаете, и не совпадет.
    Вот у Банды Четырех вроде норм:

     
  12. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    @mkramer Спасибо за объяснения. Всегда хотел знать, для чего нужна та или иная вещь.