перегрузка метода php

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

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

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

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();

Parent

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

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();

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




Добавить комментарий

Ваш e-mail не будет опубликован.