我正在学习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();
?>
答案 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 { }