для чего нужны абстрактные классы и интерфейсы ?

keltanas

marty cats
Absinthe, да, имхо, имело бы смысл перейти к предметному обсуждению типовых решений. А на морковках и я бы ничего не понял.
 

vasinsky

Новичок
вставлю свои 5 копеек: Интерфейс - это как бы - набор правил - которым должен соответствовать класс, использующий данный интерфейс

PHP:
interface man{
  public function years_old();
  public function color_skin();
}

class Russian implements man{
 
}
Тут видно - что интерфейс содержит 2 метода (без тела - это не существенно
Класс - который использует этот интерфейс - без методов.

После запуска скрипта - уже видно, что вылетает ошибка:
Fatal error: Class Russian contains 2 abstract methods and must therefore be declared abstract or implement the remaining methods (man::years_old, man::color_skin) on line8
В этой ошибке - говориться - что класс, использующий интерфейс - должен содержать методы - которые описаны в данном интерфейсе.

Для чего это нужно? Ну представь что над одним проектом работает 10 человек, эти люди должны написать по 20 однотипных классов.
Так вот если они увидят в описании проекта - что данные классы должны использовать такой-то интерфейс - и выполнять конкретные задачи (обладать только нужным функционалом) - то, даже не видя сам интерфейс или труд своих коллег - они напишут то - что и требовалось.

может есть более понятное объяснение - это просто имхо.
 

Тугай

Новичок
Если коротко, то для реализации полиморфизма одного из главных принципов ООП. Абстрактный класс - это базовый класс объекты которого создавать нельзя.
Для больших классов и их объектов, благодаря интерфейсам полиморфные методы группируются и мы получаем полиморфизм не единичных методов, а групп методов.
 
Сверху