PHP,使用父类属性作为子类中的另一种类型

时间:2014-09-18 00:33:40

标签: php oop polymorphism

我有2个Node和ChildNode,ChildNode扩展了Node。父母有财产:

class Node {
    protected $discount;
    public function __construct($discount) {
        $this->discount = $discount;

我在那里使用它像整数值,在ChildNode中我需要保存整数值数组

class ChildNode extends Node {
    public function __construct(Array $discount) {
        $this->discount = $discount; 

这样做是否正常?

1 个答案:

答案 0 :(得分:0)

我没有看到任何问题。如果您有多个类都将从以这种方式构造的父类中受益,那么将来可以轻松地将另一个方法或另一个变量一次性添加到所有子类中。我还检查了PHP如何处理继承,因为我对此并不是100%肯定,而且因为如果你指定像$ this-> doesnotexistyet =" magic!&#34,php会自动为你设置变量;;但是下面输出以下内容......

class A {

    protected $d;

    public function __construct() {
        $this->d = "A";
    }

    public function getDP() {
        return $this->d;
    }

}

class B extends A {

    public function __construct() {
        $this->d = "B";
    }

    public function getD() {
        return $this->d;
    }

}

$a = new A();
echo $a->getDP() . PHP_EOL;

$b = new B();
echo $b->getD() . PHP_EOL;
echo $b->getDP() . PHP_EOL;

var_dump($a , $b);

输出

A
B
B
object(A)#1 (1) {
  ["d":protected]=>
  string(1) "A"
}
object(B)#2 (1) {
  ["d":protected]=>
  string(1) "B"
}

这对我来说比什么都重要,但我想如果能帮助其他人遇到这个问题我会加上它。