Разница между интерфейсом и абстрактным классом?
Абстрактный(Abstract) класс - класс, который имеет
хотя б 1 абстрактный (не определенный) метод; обозначается как abstract.
Интерфейс - такой же абстрактный класс,только в нем не может быть свойств и не определены тела у методов.
Так же стоит заметить, что абстрактный класс наследуется(extends), а интерфейс реализуется (implements). Вот и возникает разница между ними, что наследовать мы можем только 1 класс, а реализовать сколько угодно.
ВАЖНО! При реализации интерфейса, необходимо реализовать все его методы, иначе будет Fatal error, так же это можно избежать, присвоив слово abstract.