php中的私有说明符

时间:2015-02-24 08:44:06

标签: php class

根据我的知识,我们不能在继承的类中使用私有属性。什么是this.it仍在工作

<?php

class oops1 
{
    private $text;

    function __construct($txt) 
    {
        $this->text=$txt;
    }

    function disply()
    {
        echo 'text:'.$this->text;

    }
}

class abc extends oops1
{
    public $headertext;

    function __construct($ht,$txt) 
    {
        $this->headertext=$ht;
        $this->text=$txt;
    }

    function disp2()
    {
        echo "Header Text: $this->headertext";
        echo "<br>Text: $this->text";
    } 
}

$obj=new abc("g", "h"); 
$obj->disp2(); 

它仍然显示在基类中定义为私有的headertext和text ...是什么问题

2 个答案:

答案 0 :(得分:2)

因为它在这一行中创建了一个类属性:

$this->text=$txt;

如果你拿走它并在基类中初始化它,如下所示:

private $text = "test";

然后你尝试访问它,你将无法

答案 1 :(得分:1)

在PHP中,如果您尝试设置不存在的类属性,则会将其创建为 public 属性。您认为子类可能无法访问私有财产是正确的。

如果此处的目的是让您的子类能够访问其父级的属性而不在类结构之外访问该属性,则使用 protected