У меня вопрос, если у меня есть родительский класс с методом с именем 'speak', и он расширяет, скажем, 3 других дочерних класса, а затем я создаю 3 объекта из каждых 3 дочерних классов, и поэтому я получаю 9 объектов в памяти, тогда у меня будет 9 раз в памяти метод 'говорить' (для родительского класса) и я буду иметь определение "говорящего" для каждого объекта, или у меня будет только указатель на каждый объект для "говорящего" 'метода в родительском классе, и поэтому я буду иметь в памяти метод' говорящего 'только один раз (очевидно, в случае, если я не переопределю' говорящее 'в дочерних классах)
<?php
class Animal
{
public $color;
function __construct($color)
{
$this->color = $color;
}
public function speak ()
{
echo 'I am method 1 from '.$this->color.' animal <br><br>';
}
}
class RedAnimal extends Animal
{
function __construct()
{
parent::__construct('red');
}
}
class GreenAnimal extends Animal
{
function __construct()
{
parent::__construct('green');
}
}
class YellowAnimal extends Animal
{
function __construct()
{
parent::__construct('Yellow');
}
}
$redAnimal = new RedAnimal();
$greenAnimal = new GreenAnimal();
$yellowAnimal = new YellowAnimal();
$redAnimal->speak();
$greenAnimal->speak();
$yellowAnimal->speak();