【问题标题】:PHP extends and private [duplicate]PHP扩展和私有[重复]
【发布时间】:2019-02-02 15:12:52
【问题描述】:
class FatherClass
{
    private $salary = 10;

    public function showInfo()
    {
        echo $this->phone . '<br/>';
        // why this result is 10
        // why the result is not 20000
        echo $this->salary . '<br/>';
    }
}

class ChildClass extends FatherClass
{
    protected $phone = '13987654321';
    private $salary = 20000;
}

$child = new ChildClass();
$child->showInfo();
echo '<pre>';
print_r($child);

“私人”的问题:

为什么这个结果是 10

为什么结果不是 20000

感谢您的帮助

【问题讨论】:

    标签: php oop private extends


    【解决方案1】:

    因为私有变量属于它声明的类。所以showInfo方法只能访问自己的类私有变量,不能访问子类私有变量。

    在两个类中将变量更改为 public 以按预期工作。

    【讨论】:

      【解决方案2】:

      当您将某些内容声明为“私有”时,这意味着它只能被类层次结构中同一类中定义的其他代码访问。如您所见,您可以在子类和父类中定义两个具有相同名称的私有变量,并且它们不会相互干扰。如果您确实想要一个在类外部无法访问但可由类层次结构中其他类中的函数访问的变量,请使用protected

      请注意,如果您将showInfo 原封不动地复制粘贴到ChildClass 中,您将看到 20000。

      【讨论】:

        猜你喜欢
        • 2018-06-25
        • 1970-01-01
        • 2019-07-13
        • 2013-03-06
        • 1970-01-01
        • 1970-01-01
        • 2015-06-19
        • 2020-01-22
        • 1970-01-01
        相关资源
        最近更新 更多