如何从子类访问父变量


how to access parent variable from child class

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

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

谢谢

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

如果你想让它输出500,你必须以某种方式将它分配给子类实例:

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

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

这个代码是严格的教育目的,我建议你去找一本关于面向对象编程基本原理的书

将变量设置为静态将使它可以通过子类 访问
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();

你混淆了类结构和引用。

$p是父类的一个实例。

$c是子类的一个实例。

他们不共享他们的数据