Php 覆盖构造
假设我有以下代码:Php 覆盖构造,php,design-patterns,architecture,Php,Design Patterns,Architecture,假设我有以下代码: abstract class AbstractCar { private $car; public function __construct(CarInterface $car) { $this->car = $car; } } class LamboCar extends AbstractCar { public function __construct(LamboCarInterface $car)
abstract class AbstractCar {
private $car;
public function __construct(CarInterface $car)
{
$this->car = $car;
}
}
class LamboCar extends AbstractCar {
public function __construct(LamboCarInterface $car)
{
parent::__construct($car);
}
}
问题是:重写构造方法是否只是将
$car
类型从CarInterface
更改为LamboCarInterface
(LamboCarInterface
扩展CarInterface
)的错误做法?假设AbstractCar确实从CarInterface
调用了一些方法,并且LamboCar
从LamboCarInterface
调用了一些方法,使您的LamboCarInterface
继承CarInterface
,并且您的\uu构造应该接收CarInterface
。不,这不是一个坏习惯。没问题,它已经继承了CarInterface
。假设使用LamboCar接口
重写构造的主要目的是,lambo有一些在LamboCar
中使用的方法,并提取给定对象的类型。(LamboCar
无法接收CarInterface
)