2012-05-26 4 views
2

Я изучаю различие между Аннотацией и интерфейсом и я читал некоторые предложения говоряPHP, ООП, Различная формулировка

класс ребенка может только продлить один абстрактный (или любой другой) класса , , тогда как интерфейс может расширяться или класс может реализовывать несколько других интерфейсов .

Я понимаю, когда он говорит, “ класс ребенка может только продлить один реферат (или любой другой) класса, ” он означает:

class first 
{ 
    public function Search() 
    { 
     return 'Hellow'; 
    } 
} 

abstract class first2 extends first 
{ 

} 

class second extends first2 
{ 

} 

$ob = new second(); 
echo $ob->Search(); 

Однако я Жду ’ т понять остальное его предложение, где он говорит, “, тогда как интерфейс может расширяться или класс может реализовать несколько других интерфейсов. ”

Не могли бы вы объяснить его последнее предложение и добавить пример кода? Спасибо всем, и у меня хороший день.

+0

http://www.php.net/manual/de/language.oop5.interfaces.php – gearsdigital

+0

Спасибо gearsdigital за ссылку. – Blanktext

ответ

5

Вы можете реализовать более одного интерфейса

interface C { 
    public function method1(); 
} 

interface D { 
    public function method2(); 
} 

class A implements C,D { 

    //implement from interface C 
    public function method1() { 

    } 
    //implement from interface D 
    public function method2() { 

    } 
} 

Здесь вам нужно будет реализовать методы из интерфейса C и D. Кроме того, можно расширить интерфейсы в пределах интерфейсов, как и обычные классы.

interface D extends C{} 

Полезно, когда вам нужны общие методы. поэтому вы пишете «схему» в интерфейс, какие методы вы ожидаете от базового класса, который будет реализован.

В то время как абстрактный - один расширенный класс, вы не можете создавать экземпляр для него, расширяться. Это полезно, когда вы хотите иметь базовый класс с общей функциональностью или абстрактными методами, что должно быть реализовано позже.

Больше вы всегда можете прочитать в php.net - interfaces

+0

Спасибо, Аликус, теперь я понимаю, что у меня хороший день. – Blanktext

+0

И спасибо за ссылку. – Blanktext

+0

Базовые классы почти всегда плохие. Идея наследования заключается не в том, чтобы собирать часто используемые функции в каком-то классе Blob/God. Идея наследования состоит в том, чтобы иметь некоторый четко определенный Суперкласс, а затем иметь особые случаи/вариации в подклассах. – Gordon

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