Задать вопрос

К чему применять интерфейс?

Почти всегда получается, что я использую интерфейс и классы его реализующие. Но вот когда вдруг появляется необходимость в абстрактном классе, сразу затуп к чему применять интерфейс: к реализующему классу:
class FooService extends AbstractFooService implements FooServiceInterface {}


или в этом случае уже к абстрактному классу:
abstract class AbstractFooService implements FooServiceInterface {}

class FooService extends AbstractFooService {}


На основе чего делать выбор? Мне все еще нравится первый вариант. Но каких-то за или против у меня нет.
А вообще конечно стараюсь избегать абстрактных классов.
  • Вопрос задан
  • 144 просмотра
Подписаться 2 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 3
@Cheypnow
Интерфейс описывает контракт.
Абстрактный класс описывает базовое поведение, общее для нескольких потомков.
В чем проблема?
Ответ написан
Комментировать
Compolomus
@Compolomus Куратор тега PHP
Комполом-быдлокодер
Не стоит бояться абстрактных классов, это может быть очень удобным, интерфейс не содержит реализации, не может иметь свойств, только константы. Так же интерфейс только публичные методы имеет, когда абстрактный класс может содержать какие то приватные методы, где будет содержаться общая логика
Я за второй вариант
Ответ написан
Комментировать
@shevchenko__k
Помогаю новорожденным web программистам
первый вариант правильный. я не пойму в чем проблема
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽