Заміна успадкованих методів і властивостей
Для того, щоб замінити успадкований метод батьківського класу в новому класі, необхідно просто замінити цей метод в новому класі. При цьому необхідно використовувати те ж ім'я, яке було в батьківському класі:
<? Php
class MyClass
{
public $prop1 = "Я метод класу!";
public function __construct ()
{
echo 'Клас "', __CLASS__, '" було створено!';
}
public function __destruct ()
{
echo 'Клас "', __CLASS__, '" було знищено.';
}
public function __toString ()
{
echo "Використовуємо метод toString:";
return $this-> getProperty ();
}
public function setProperty ($newval)
{
$this-> prop1 = $newval;
}
public function getProperty ()
{
return $this-> prop1. "";
}
}
class MyOtherClass extends MyClass
{
public function __construct ()
{
echo "Новий конструктор в ". __CLASS__. ".";
}
public function newMethod ()
{
echo "Із нового методу ". __CLASS__. ".";
}
}
// Створення об'єкта
$newobj = new MyOtherClass;
// Виводимо об'єкт
echo $newobj-> newMethod ();
// Використання методу батьківського класу
echo $newobj-> getProperty ();
?>
У результаті ми отримаємо:
Новий конструктор MyOtherClass.
З нового методу MyOtherClass.
Я властивість класу!
Клас "MyClass" було знищено.
Існують ситуації, коли необхідно замінивши метод у новому класі, викликати цей же метод, але тільки в батьківському класі. У таких випадках використовується оператор parent::
Приклад:
<? Php
class MyClass
{
public $prop1 = "Я властивість класу!";
public function __construct ()
{
echo 'Клас "', __CLASS__, '" було створено!';
}
public function __destruct ()
{
echo 'Клас "', __CLASS__, '" було знищено.';
}
public function __toString ()
{
echo "Using the toString method:";
return $this-> getProperty ();
}
public function setProperty ($newval)
{
$this-> prop1 = $newval;
}
public function getProperty ()
{
return $this-> prop1. "";
}
}
class MyOtherClass extends MyClass
{
public function __construct ()
{
parent:: __construct (); // Виклик конструктора батьківського класу
echo "Новий конструктор". __CLASS__. ".";
}
public function newMethod ()
{
echo "З нового методу класу". __CLASS__. ".";
}
}
// Створюємо об'єкт
$ Newobj = new MyOtherClass;
// Виводимо об'єкт
echo $newobj-> newMethod ();
// Використання методу батьківського класу
echo $ newobj-> getProperty ();
?>
У результаті у вікні браузера можна спостерігати:
Коас "MyClass" було створено!
Новий конструктор в MyOtherClass.
З нового методу в MyOtherClass.
Я властивість класу!
Клас "MyClass" було знищено.