Абстрактный класс не обязательно корень иерархии.
А вообще, по идее, все отличия - это как раз то, что ты и перечислил))
Ну а по сути, vasa_c прав.
Цитата |
Цитата | function method(mytype $object) {} |
Если mytype - класс (в т.ч. и абстрактный), то $object может быть только этого класса или его потомка. Если mytype интерфейс - $object может быть любого класса из любой ветви иерархии. Главное только, чтобы он реализовывал нужный интерфейс.
|
Здесь, кстати, поведение для interface и для abstract class в php одинаковое. и implements, и extends здесь по сути дают еще одну связь родитель-потомок.