Раньше сегодня я занимался исследованием PHP абстрактных классов, interfaces и traits.
Насколько я могу судить, абстрактный класс говорит, что "все, что использует меня, будет использовать эти методы и атрибуты", интерфейсы говорят, что "все, что использует меня, должно иметь эти методы и атрибуты", и черты говорят, что "что-либо, использующее меня, также будет имеют эти методы и атрибуты".
Теперь, мой вопрос: если вы получаете эквивалент абстрактного класса, когда используете интерфейс и черту, почему существуют абстрактные классы?
Если я ошибаюсь, и интерфейс и черта не являются эквивалентом абстрактного класса, можете ли вы объяснить, почему это не так?