Заміна успадкованих методів і властивостей

 

Для того, щоб замінити успадкований метод батьківського класу в новому класі, необхідно просто замінити цей метод в новому класі. При цьому необхідно використовувати те ж ім'я, яке було в батьківському класі:

<? 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" було знищено.