Перегрузка методов


Рассмотрим код ниже. У нас есть класс-родитель Car. В нем описан метод printWheels. Есть второй класс Toyota, который наследует класс Car.

Что будет, если в классе Toyota мы опишем метод printWheels, такой же как у родителя? Это будет называться перегрузкой методов.

Т.е. метод в классе-наследнике закроет родительский метод. Теперь при вызове printWheels будет вызываться метод класса-наследника.

[php]
class Car {
public $numWheels = 4;
function printWheels() { echo $this->numWheels; }
}
class Toyota extends Car {
public $country = 'Japan';
function printCountry() { echo $this->country; }
}
function printWheels() {
echo "Перегруженный метод printWheels() ";
}
}
$myCar = new Toyota();
$myCar->printWheels();
[/php]

Parent

А если мы хотим, чтобы вызывались и перегруженный метод printWheels и такой же метод родителя. Для этого используем конструкцию parent:

[php]
class Car {
public $numWheels = 4;
function printWheels() { echo $this->numWheels; }}
class Toyota extends Car {
public $country = 'Japan';
function printWheels() {
echo "Перегруженный метод printWheels() ";
parent:: printWheels(); //использование parent
}}
$myCar = new Toyota();
$myCar->printWheels();
[/php]

Конструкция parent::printWheels () позволяет обратиться к родительскому методу.


Ваш комментарий

Ваш адрес email не будет опубликован.

Для отправки комментария, поставьте отметку, что разрешаете сбор и обработку ваших персональных данных . Политика конфиденциальности