Интерфейс с абстрактными методами - PullRequest
0 голосов
/ 05 января 2011

Я наткнулся на некоторый код 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);
?>

Ответы [ 2 ]

3 голосов
/ 05 января 2011

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

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

1 голос
/ 05 января 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...