【发布时间】:2019-04-11 01:58:02
【问题描述】:
我的问题是,如果我有一个名为“speak”的父类,它扩展了让我们说其他 3 个子类,然后我从每个 3 个子类实例化 3 个对象,所以我最终得到 9 个对象在内存中,然后我将在内存中有 9 次名为“speak”(在父类上)的方法,并在每个对象上都有“speak”-s 定义,或者我是否在每个对象上都有一个指向“speak”的指针' 父类上的方法,所以我将在内存中只有一次 'speak' 方法(显然,如果我不覆盖子类中的 'speak')
<?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();
【问题讨论】:
-
内存中的“对象”只是保持该对象状态所需的数据。提供类功能的代码是完全独立的。
-
对不起,我不明白,所以你是说属性将被加载到内存中,并且将为每个类加载道具,但它们会从一个地方引用它们的方法?
标签: php class oop inheritance methods