从父对象继承属性

时间:2014-10-08 14:35:38

标签: php oop inheritance abstract-class

所有

如果我有这样的课程:

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)这样的事情并以这种方式传递吗?

提前感谢您,任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

因为它们是不同的实例。

在这个例子中,有一个实例同时是AnotherClass和MyClass

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

$firstClass->showAll();

这些类都不是抽象的。

在您的示例中,以下陈述为真:

  • $ secondClass是AnotherClass
  • $ secondClass是MyClass
  • $ firstClass是MyClass
  • $ firstClass不是AnotherClass

另外,请不要使用var来定义类属性。

使用privatepublicprotected

class MyClass {
     public $height;
     public $width;