0

我有两个类,一个是父类,另一个是扩展类,我需要在扩展类中使用主变量。例如

class parentClass
{
    $this->value = null
    function __construct()
    {
        echo "im parent" ;
    }

}
class childClass extends parentClass
{

    function sayIt()
    {
        var_dump($this->value);
    }
}

$p = new parentClass ; 
$p->value = 500 ; 

$c = new childClass ; 
$c->sayIt(); // this output null ! i want it to output 500 , how i can do that

谢谢

4

3 回答 3

2

这不是继承的工作方式。childClass不会自动连接到父类,它只是从它继承它只是从父类parentClass继承所有公共和受保护的变量/方法。它没有连接到父实例。

如果您希望它输出 500,则必须以某种方式将其分配给子类实例:

$c = new childClass ; 
$c->value = 500;
$c->sayIt()

如果您需要在所有类和实例之间共享一个变量,您可以使用一个static变量。

于 2013-01-06T01:24:19.530 回答
1

糟糕 糟糕 糟糕 代码严格用于教育目的,我建议你买一本关于面向对象编程基本原则的书

使您的变量静态将使其可以通过子类访问

class parentClass {
    public static $value = null;

    function __construct() {
        echo "patent called";
    }
}
class childClass extends parentClass {

    function sayIt() {
        var_dump(self::$value);
    }
}

$p = new parentClass();
parentClass::$value = 500;

$c = new childClass();
$c->sayIt();
于 2013-01-06T01:30:12.517 回答
0

您对类结构和引用感到困惑。

$p是父类的一个实例。

$c是子类的一个实例。

他们不分享他们的数据。

于 2013-01-06T01:24:55.407 回答