Интерфейсы объектов
20 августа 2018
Интерфейс это обёртка с объявлением публичных методов, которые должны быть определены (реализованы) в классе, наследующий интерфейс.
Интерфейс объявляется с помощью ключевого слова interface
В классе, наследующий интерфейс, должны быть определены все методы и конструктор, если он был объявлен
2) Методы интерфейса могут быть только публичными;
3) Интерфейсы могут содержать только методы, константы и конструктор;
4) Класс может реализовывать несколько интерфейсов
5) Класс одновременно может наследовать другой класс и интерфейсы
6) Если в классе не реализуется какой-либо метод интерфейса, то класс должен быть объявлен как абстрактный. В ином случае возникнет ошибка
Интерфейс объявляется с помощью ключевого слова interface
interface a
{
const prop_1 = 'Привет';
public function __construct();
public function f1();
public function f2($b, $c);
public function f3($e);
}
В классе, наследующий интерфейс, должны быть определены все методы и конструктор, если он был объявлен
class b implements a
{
private $date;
public function __construct()
{
$this->date = date('d.m.Y H:i:s');
}
public function f1()
{
return 'ААА';
}
public function f2($b, $c)
{
return $b.$c;
}
public function f3($e)
{
return self::prop_1.' '.$e;
}
public function get_date()
{
return $this->date;
}
}
$w = new b();
echo $w->get_date(); /* Выведет текущую дату */
echo $w->f3('Владимир'); /* Выведет 'Привет Владимир' */
Особенности интерфейсов
1) Интерфейс может происходить от нескольких интерфейсов-предков с помощью оператора extendsinterface c extends a, b
2) Методы интерфейса могут быть только публичными;
3) Интерфейсы могут содержать только методы, константы и конструктор;
4) Класс может реализовывать несколько интерфейсов
class A implemenets B, C, D
5) Класс одновременно может наследовать другой класс и интерфейсы
class A extends E implemenets B, C, D
6) Если в классе не реализуется какой-либо метод интерфейса, то класс должен быть объявлен как абстрактный. В ином случае возникнет ошибка
abstract class g implements a
{
private $date;
public function __construct()
{
$this->date = date('d.m.Y H:i:s');
}
public function f1()
{
return 'ААА';
}
public function f2($b, $c)
{
return $b.$c;
}
}