我最近开始使用PHP的OOP,并使用可见性概念(public,protected,private)。在这里,我对被保护的知名度感到困惑。受保护的成员只能在声明类或子类或子类中访问。我对PHP的网站这个例子:在PHP中的OOP能见度
class MyClass
{
public $public = 'Public';
protected $protected = 'Protected';
private $private = 'Private';
function printHello()
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}
class MyClass2 extends MyClass
{
// We can redeclare the public and protected method, but not private
protected $protected = 'Protected2';
function printHello()
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}
$obj2 = new MyClass2();
echo $obj2->public; // Works
echo $obj2->protected; // Fatal Error
echo $obj2->private; // Undefined
$obj2->printHello(); // Shows Public, Protected2, Undefined
在这段代码在倒数第三行(echo $obj2->protected; // Fatal Error
)它给了致命的错误。但是在这种情况下,被保护的变量是不是继承到MyClass2的子类?那么为什么这个致命的错误呢?有人可以请教我这个吗?
您正尝试访问两个类范围之外的受保护的成员。 – 2014-09-01 07:52:06
'echo $ obj2-> protected; //致命错误'这条线在两个类之外。它应该如何工作呢?它只能以这种方式与公众一起工作 – 2014-09-01 07:54:31
而且你已经用'printHello'方法演示了你的孩子可以访问父母受保护的财产。 – 2014-09-01 07:55:29