我最近開始使用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