關於php存取控制的問題
class MyClass{
public $public = 'public';
protected $protected = 'protected';
private $private = 'private';
function printHello(){
echo $this->public;
echo $this->protected;
echo $this->private . "
";
}
}
$obj = new MyClass();
$obj->printHello();
class MyClass2 extends MyClass{
function printHello(){
echo $this->public;
echo $this->protected;
echo $this->private . "
";
}
}
$obj2 = new MyClass2();
$obj2->printHello(); // 輸出 Public、Protected 和 Undefined
class MyClass3 extends MyClass{
}
$obj3 = new MyClass3();
$obj3->printHello(); // 輸出 Public、Protected 和 private
為什麼$obj3->printHello的private有值,不是private 定義的類成員則只能被其所在類訪問。
------解決思路----------------------
MyClass2 中有printHello 重寫了 MyClass中的printHello。
而MyClass2 調用 MyClass的$private為undefined 因為MyClass2的printHello方法沒有許可權讀取MyClass的$privite
MyClass3 中沒有printHello,所以$obj3->printHello實際上是調用MyClass的printHello
MyClass printHello方法讀取 Myclass $private有許可權。所以 $obj3->printHello可以顯示出MyClass 的 $private
------解決思路----------------------
樓上正解!!!!