Зачем нужны абстрактные классы и интерфейсы? И в php тоже.
Я понимаю так: абстрактный класс позволяет декларировать методы для дочерних классов, также не определять в классе наследнике методы родителя, и что по сути от обычного класса он отличается тем, что в названии некоторых методов и названии класса есть приписка "abstract" и что нельзя создать его экземпляр. Вопрос: зачем тогда он вообще нужен?
Как я понимаю, он (абстрактный класс) носит чисто декоративный характер, нужен для ограничения действий разработчика, удобства разработки и вообще это лишь "сахар".
Та же тема с интерфейсами. Зачем они нужны, если потом их методы и свойства будут переопределяться? А если не будут, то чем хуже наследование от обычного родительского класса, где так же можно определить свойства и методы, но опустить реализацию?
Есть ещё трейты, но с ними более-менее понятно. Чтобы не плодить классы родители и от них каждый раз не перенаследоваться, создавая при этом огромные цепочки наследований, используются трейты, в которых определяется метод, который есть в классе родителе, и потом трейт подключается к классу наследнику, переопределяет родительский метод и нет лишней возни.
5 комментариев
Добавить комментарий