Raman 23 Ответов: 1

Как это возможно, что частное свойство является доступом в дочернем классе


сэр, когда мы откомментируем метод getModel в дочернем классе и выполним его dispaly error private property can not access in child but in get_Display method same propety is access how is it possible or i m making a mistake?

классное телевидение{
объем публичных $;
частная модель $;

функция volume_up(){
$this - & gt;volume++;
}


функция _ _ construct($m,$v){
$this - & gt;model=$m;
$this - & gt;volume=$v;
}

функция getModel(){
вернуть $this - & gt;модель;

}

}





$obj=новый телевизор('xyz', 10);
//$obj - & gt;model; / / ошибка не может получить доступ к частной собственности

echo $obj- & gt;getModel (); / / может получить доступ к частной собственности


плазма класс расширяет ТВ {
/ * функция getModel(){
вернуть $this - & gt;модель;

}*/


функция get_Display( ){
return $this - >model= 'AXN';

}


}

$obj2=новая плазма('xyz', 10);
//$obj - & gt;model; / / ошибка не может получить доступ к частной собственности

// $obj2- & gt;getModel (); / / может получить доступ к частной собственности
echo $obj2- & gt;get_Display('ANX');
?>

Что я уже пробовал:


классное телевидение{
объем публичных $;
частная модель $;

функция volume_up(){
$this - & gt;volume++;
}


функция _ _ construct($m,$v){
$this - & gt;model=$m;
$this - & gt;volume=$v;
}

функция getModel(){
вернуть $this - & gt;модель;

}

}





$obj=новый телевизор('xyz', 10);
//$obj - & gt;model; / / ошибка не может получить доступ к частной собственности

echo $obj- & gt;getModel (); / / может получить доступ к частной собственности


плазма класс расширяет ТВ {
/ * функция getModel(){
вернуть $this - & gt;модель;

}*/


функция get_Display( ){
return $this - >model= 'AXN';

}


}

$obj2=новая плазма('xyz', 10);
//$obj - & gt;model; / / ошибка не может получить доступ к частной собственности

// $obj2- & gt;getModel ();/ / не удается получить доступ к частной собственности
echo $obj2- & gt;get_Display ('ANX'); / / но здесь частная собственность-это доступ, почему ?
?>

1 Ответов

Рейтинг:
4

Richard MacCutchan

Вы не получаете доступ к частной собственности напрямую, а используете "геттер", чтобы вернуть ее из класса. Это правильный способ сделать это, позвонив getModel.


Raman 23

сэр, спасибо за решение, но есть проблема getModel функция работает правильно, частная собственность не может быть доступна там, но в get_Display, когда я инициализирую $this - > model= 'AXN' должна быть ошибка произошла частная собственность не может быть доступна,но это не происходит почему?

Richard MacCutchan

$this->model='AXN'
Нет, ошибки быть не должно, так как эта инструкция происходит внутри класса, который имеет доступ к частным свойствам. Я не знаю PHP, вы уверены, что инструкция обновляет свойство, о котором вы говорите, а не динамически создает новое?

Richard MacCutchan

Смотреть также http://php.net/manual/en/language.oop5.visibility.php.