Интерфейсные методы в любом случае в основном абстрактные, поэтому иметь абстрактные интерфейсные методы не имеет особого смысла.

кнулся на некоторый код 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);
?>
 ryeguy04 янв. 2011 г., 22:33
Затем вы должны удалить подсказки типа int. Вы не можете напечатать подсказку по скалярам в php.
 gprime04 янв. 2011 г., 22:28
Я спрашиваю, как вы думаете, может быть полезным иметь интерфейс, содержащий абстрактные методы. У вас будут абстрактные классы, которые реализуют определенный интерфейс.
 ryeguy04 янв. 2011 г., 22:26
О чем именно вы спрашиваете нас? Абстрактное ключевое слово или скалярный тип хинтинга?
 ryeguy04 янв. 2011 г., 22:35
Ваш пример даже не имеет особого смысла. Методы на интерфейсах уже абстрактны. Вы говорите о возможности делать что-то вроде миксинов?

Ответы на вопрос(2)

это не полезно. Он должен либо использовать абстрактные классы, либо просто простые интерфейсы.

Интерфейсные методы в любом случае в основном абстрактные, поэтому иметь абстрактные интерфейсные методы не имеет особого смысла.

Решение Вопроса

Все методы в интерфейсе являются абстрактными по определению.

Абстрактный метод - это метод, для которого прототип предоставляется, но не реализуется. Это заставляет подклассы реализовывать его или быть объявленным абстрактным.

Ваш ответ на вопрос