Почему дочерний класс не вызывает конструктор родительского класса?

0

От php.net

Если дочерний элемент не определяет конструктор, он может быть унаследован от родительского класса, как метод нормального класса (если он не был объявлен как закрытый).

Из того, что я понимаю, если я не определяю конструктор в дочернем, будет вызываться родительский конструктор.

Итак, вот мой пример, я создал родительский класс с конструктором. Инициированный как дочерний, так и родительский класс, однако вызывает следующее предупреждение: Предупреждение: Отсутствует аргумент 1 для транспортного средства :: __ construct()

Вот пример кода.

class vehicle{
    protected $type;
    function __construct($type){
        $this->type = $type;
        echo "Type chosen: $this->type";
    }
}

class car extends vehicle{

}

$vehicle = new vehicle("sport");
$car = new car;
  • 1
    Поскольку в конструкторе vehicle есть обязательный аргумент, это означает, что у car тот же обязательный аргумент ..... но вы пытаетесь создать экземпляр car без этого аргумента, поэтому он вызывает родительский конструктор и выдает ошибку, потому что вы не передал этот аргумент при попытке создать его экземпляр
  • 0
    Что вы ожидаете случиться?
Показать ещё 3 комментария
Теги:
inheritance
constructor

1 ответ

1
Лучший ответ

Ну, это вызов конструктора родительского класса. И поскольку вы не предоставляете никаких аргументов для конструктора, когда вы объявляете объект $car, он дает вам предупреждение об отсутствующем параметре.

Вы должны инициализировать объект дочернего класса, предоставив аргумент "type" следующим образом:

$car = new car("family");

Ещё вопросы

Сообщество Overcoder
Наверх
Меню