【发布时间】:2015-04-24 16:49:28
【问题描述】:
来自 php.net
如果子类没有定义构造函数,那么它可以像普通类方法一样从父类继承(如果它没有声明为私有)。
据我了解,如果我不在孩子中定义构造函数,则会调用父构造函数。
例如,我创建了一个带有构造函数的父类。实例化了子类和父类,但是它会引发以下警告: 警告:vehicle::__construct() 缺少参数 1
示例代码:
class vehicle{
protected $type;
function __construct($type){
$this->type = $type;
echo "Type chosen: $this->type";
}
}
class car extends vehicle{
}
$vehicle = new vehicle("sport");
$car = new car;
【问题讨论】:
-
因为
vehicle在其构造函数中有一个 mandatory 参数,这意味着car具有相同的强制参数.....但是您正在尝试实例化car没有那个参数,所以它调用父构造函数并给你一个错误,因为你在尝试实例化它时没有传递那个参数 -
您希望发生什么?
-
@axiac 我认为它会自动调用父构造函数而不会抛出错误,因为我已经为父构造函数提供了参数
-
$car = new car;构造函数的参数在哪里? -
您没有向父构造函数提供 any 参数.....只是因为您实例化了父类型的 one 对象已经,并不意味着该父级的所有其他实例,或从该父级继承的将继承该值.....继承的是类,而不是实例
标签: php inheritance constructor