为什么在打电话给父母时使用退货?

时间:2014-09-27 19:13:27

标签: php

我正在学习OO PHP,我正在尝试在子类中使用parent ::方法。我注意到我必须使用“额外”返回来显示父方法的输出。 有人可以解释一下这是为什么吗?

这是我使用的代码,在代码中我发表了评论。

class ShopProduct {

    public $productnumber;

    public function __construct($productnumber) {
        $this->productnumber = $productnumber;
    }
    public function getSummary(){
        return $this->productnumber;
    }
}

class BookProduct extends ShopProduct {

    public function __construct($productnumber) {
        parent::__construct($productnumber);
    }
    public function getSummary() {
        return parent::getSummary(); // if i dont use return it doesnt work? why is that?
        // parent::getSummary(); is not enough it seems.
    }
}

$product = new BookProduct(11111);
echo $product->getSummary();
?>

1 个答案:

答案 0 :(得分:1)

public function getSummary() {
    return parent::getSummary(); // if i dont use return it doesnt work? why is that?
    // parent::getSummary(); is not enough it seems.
}

parent::getSummary()替换为任何其他函数或方法调用:

public function getSummary() {
    foo();
}

当然,在这种情况下,你不会指望getSummary返回任何内容,对吗?仅仅因为您调用的方法是parent::...并不会改变有关此行为的任何内容。它不会return自动化,因为您可能希望执行以下操作:

public function getSummary() {
    $summary = parent::getSummary();
    return "Book: $summary";
}
顺便说一句,如果你的方法唯一做的就是调用它的父节点,你可以省略整个方法。换句话说,这个:

class BookProduct extends ShopProduct {

    public function __construct($productnumber) {
        parent::__construct($productnumber);
    }
    public function getSummary() {
        return parent::getSummary();
    }
}

与此完全相同:

class BookProduct extends ShopProduct { }