Наследование свойств от родительского объекта

Все,

Если у меня есть такой класс:

class MyClass {
var $height;
var $width;

function setDimensions($height,$width) {
$this->height = $height;
$this->width  = $width;
}
}

И еще один класс, как так …

class AnotherClass extends MyClass {
var $color;
var $speed;

function setFeatures($color,$speed) {
$this->color  = $color;
$this->speed  = $speed;
}

function showAll() {
echo "Color: ".$this->color."<br />";
echo "Speed: ".$this->speed."<br />";
echo "Height: ".$this->height."<br />";
echo "Width: ".$this->width."<br />";
// echo "Height: ".parent::height."<br />";
}
}

Тогда я делаю это:

$firstClass = new MyClass();
$firstClass->setDimensions('200cm', '120cm');

$secondClass = new AnotherClass();
$secondClass->setFeatures('red','100mph');

$secondClass->showAll();

Он не печатает свойства, определенные в $ firstClass. Это понятно, так как это два отдельных экземпляра / объекта. Как я могу передать свойства от одного объекта к другому? Должен ли я сделать что-то вроде $secondClass = new AnotherClass($firstClass) и передать это таким образом?

Заранее спасибо, любая помощь приветствуется.

0

Решение

Потому что это разные экземпляры.

В этом примере есть один экземпляр, который одновременно является AnotherClass и MyClass

$firstClass = new AnotherClass();
$firstClass->setDimensions('200cm', '120cm');
$firstClass->setFeatures('red','100mph');

$firstClass->showAll();

Ни один из этих классов не является абстрактным.

В вашем примере следующие утверждения верны:

  • $ secondClass — это другой класс
  • $ secondClass — это MyClass
  • $ firstClass — это MyClass
  • $ firstClass не является AnotherClass

Также, пожалуйста, не используйте var определить свойства классов.

Используйте либо private, public или же protected:

class MyClass {
public $height;
public $width;
2

Другие решения

Других решений пока нет …