Вот код:
<?
class core{
var $razdel;
function init($razdel){
$this->razdel = $razdel;
}
}
class structure extends core{
function test(){
echo $this->razdel;
}
}
$Core= new core;
$Core->init(1);
$structure = new structure;
echo $structure->test();
?>
обьект дочернего класса structure хоть и содержит атрибут razdel, но он пустой,
т.е. при создании обьекта дочернего надо снова запускать конструктор родительского.
Есть ли какая-то возможность унаследовать не только атрибуты, но и их значения?
Спустя 1 час, 1 минута, 20 секунд (24.08.2010 - 16:59) vitaly777 написал(а):
2 разных обьекта. Мне кажется, что нет.
Спустя 4 часа, 46 минут, 54 секунды (24.08.2010 - 21:46) Nord написал(а):
Цитата |
т.е. при создании обьекта дочернего надо снова запускать конструктор родительского. |
Так и есть, но в вашем коде нет ни одного конструктора
class core {
public $razdel;
function __construct($razdel) {
$this->razdel = $razdel;
}
}
class structure extends core {
function test() {
echo $this->razdel;
}
}
$structure = new structure('ss');
echo $structure->test(); // ss
Спустя 3 часа, 37 минут, 47 секунд (25.08.2010 - 01:23) allatone написал(а):
Спасибо, разобрался.
Спустя 7 часов, 55 минут, 28 секунд (25.08.2010 - 09:19) linker написал(а):
Значения унаследовать нельзя, только если они явно не заданы
class core
{
public $razdel = 'ss';
}
class structure extends core
{
}
$structure = new structure();
echo $structure->razdel; // ss
Спустя 23 часа, 18 минут, 43 секунды (26.08.2010 - 08:37) Guest написал(а):
или имеют тип static
Спустя 1 час, 24 минуты, 47 секунд (26.08.2010 - 10:02) linker написал(а):
static не наследуется, а принадлежит тому классу, в котором определено данное статическое поле.