Это не совсем так.Если вы создадите new Computer
, вы получите именно это.Вы хотите создать new Mouse()
, который относится к типу computer (хотя мне это кажется странным бездействием).
Родительский объект (компьютер) понятия не имеет, что у него есть дочерний элемент (мышь).Это связано с тем, что у родительского класса может быть несколько детей.
Как правило, у вас будет что-то вроде компьютера, расширяющего яблоко, или компьютера, расширяющего Dell, тогда у вас будет
$a = new apple();
$b = new dell();
, и они 'У обоих есть доступные методы, которые определены в компьютере, плюс свои собственные методы.
Кроме того, когда вы переопределяете метод, такой как __construct
, вы должны явно вызывать родительский конструктор (или метод), если вы хотите, чтобы он выполнялся, например:
class computer {
function __construct() { do stuff }
}
class apple extends computer {
function __construct() {
parent::__construct();
... do stuff ...
}
}
Только методкласса, который вы создали, исполняется.Если он не может найти метод в дочернем классе, он ищет цепочку для метода.то есть.если у класса computer
есть 'movemouse', а у вашего дочернего класса он не выполнит класс movemouse
в родительском классе.