|
|
|
| вот код
class Test{
private $var;
function setMe($value){
$this->var = $value;
}
}
class More extends Test{
public $var;
}
$oMore = new More;
echo $oMore->setMe('foo');
echo $oMore->var;
print_r($oMore);
|
те есть класс More который наследует Test. Я думал что тк у нас в классе Test есть переменная var но она же есть и в More значит мы ее переопределили в производном классе.
И когда делаем echo $oMore->setMe('foo'); то мы присваевыем foo свойству public $var в More
но echo $oMore->var; ..ничего не выводит
а print_r($oMore); //More Object ( [var] => [var:private] => foo )
те получается мы foo присвоили свойству private $var ПОЧЕМУ ? ПОЧЕМУ У в $oMore теперь два свойства var ? ПОЧЕМУ НЕ СРАБОТАЛО ПЕРЕОПРЕДЕЛЕНИЕ VAR ? | |
|
|
|
|
|
|
|
для: asker
(08.05.2009 в 14:10)
| | Это называется инкапсуляцией.
$var в классе Test объявлена как закрытая (частная) переменная. Поэтому при наследовании ты не можешь к ней достучаться. Объяви ее как protected и все получится. | |
|
|
|