我可以發誓,在標準的OOP中,您可以從基類中的方法訪問具體類的私有成員。 PHP是否僅僅以不同的方式實現,或者我做錯了什麼,或者我的理解完全錯誤?基類不允許訪問私有成員?
<?php
class Base {
public function __toString() {
return $this->name;
}
}
class Concrete extends Base {
private $name;
public function __construct($name) {
$this->name = $name;
}
}
$o = new Concrete('foobar');
echo $o;
上述代碼片段拋出Fatal error: Cannot access private property Concrete::$name on line 5
。如果我將$name
的訪問級別更改爲protected
,它將起作用。
如果擴展Base並且不在子類中引入屬性'$ name',該怎麼辦?基類不能依賴於子類! – Niko
沒有什麼叫做「標準」OOP;每種語言都有它自己的味道。然而,我想不出任何語言,我希望在我的頭頂上工作...... – Stobor
你想在這裏做什麼?我聽說過Control_的_Inversion,但是我從來沒有聽說過_Inversion of Inheritance _... –