Я натолкнулся на некоторый PHP-код, написанный сотрудником (он ничем не использовался). В основном это был интерфейс, содержащий абстрактные методы. Затем я сказал, что это глупо и показывает, что рядом со мной сидит другой сотрудник. Мы засмеялись, но потом стали спрашивать друг друга, если это было возможно, и если да, то если это было действительно полезно. По-видимому, это невозможно (см. Пример ниже), но если бы это было возможно, было бы полезно.
Можете ли вы подумать о ситуациях, когда это может быть полезно?
<?php interface Itest { abstract public function add(int $x, int $y); } abstract class ParentTest implements Itest { abstract public function add(int $x, int $y); } class test extends ParentTest { public function add(int $x, int $y) { return $x+$y; } } $w = new test; echo $w->add(5,8); ?>
Все методы в интерфейсе являются абстрактными по определению.
Абстрактным методом является метод, для которого прототип поставляется, но не реализован. Он заставляет подклассы выполнять его или объявлять абстрактными.
Нет, это не полезно. Он должен либо использовать абстрактные классы, либо просто интерфейсы.
В любом случае, методы интерфейса в основном абстрактны, поэтому использование абстрактных методов интерфейса не имеет большого смысла.