Сначала меня смутило, почему оба метода звонят в конструкторе, но теперь я думаю, что понимаю. Расширяющиеся классы наследуют родительские методы, как если бы они были объявлены в самом классе. И методы существуют в родительском, поэтому оба должны работать.
Теперь мне интересно, есть ли предпочтительный способ (например, лучший способ) вызова метода (через parent
или this
) и независимо от того, действительно ли это идентичные способы выполнения одного и того же кода или если есть какие-либо оговорки при использовании одного над другим.
Извините, я, наверное, подумал об этом.
abstract class Animal {
function get_species() {
echo "test";
}
}
class Dog extends Animal {
function __construct(){
$this->get_species();
parent::get_species();
}
}
$spike = new Dog;