2011-01-04 4 views
0

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

Что именно вы нас спрашиваете? Абстрактное ключевое слово или скалярный тип намека? – ryeguy

+0

Я спрашиваю, думаете ли вы, что интерфейс, содержащий абстрактные методы, может оказаться полезным. У вас будут абстрактные классы, которые реализуют определенный интерфейс. – gprime

+0

Затем вы должны удалить подсказки типа «int». Вы не можете набирать подсказки на скалярах в php. – ryeguy

ответ

3

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

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

1

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

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

Смежные вопросы