Что такое интерфейсы? Чем отличаются от абстрактных классов?

Ответ

Интерфейс - контракт, описывающий набор методов без реализации:

interface Cacheable {
    public function getCacheKey(): string;
    public function getCacheTTL(): int;
}

class User implements Cacheable {
    public function getCacheKey(): string { return "user:{$this->id}"; }
    public function getCacheTTL(): int { return 3600; }
}

Различия от абстрактных классов:

  • Интерфейс не может содержать реализацию (кроме констант)
  • Класс может реализовывать несколько интерфейсов, но наследовать только один класс
  • Интерфейс не может иметь свойств
  • Абстрактный класс может содержать и абстрактные, и обычные методы
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.