如果我没有为子类定义构造函数,我可以直接使用父类的构造函数吗?


If I don't define a constructor for a subclass, can I use the constructor of the superclass directly?

构造函数是继承的还是属于定义它们的类?我只看到过调用父类构造函数的子类构造函数的例子。这是我当前的代码,它可以给一些提示。(我会根据你的回复更改代码如果我可以使用父类的构造函数,我就不会为每个子类定义一个构造函数,并从每个子类调用父类的构造函数。

abstract class view
{
 public $vieverid;
 function __construct($viewerid) {
  $this->viewer = $viewerid;
 }
}
class viewactor extends view{
 function __construct($viewerid) {
  $this->viewerid = $viewerid;
 }

根据我的理解,如果定义了子构造函数,PHP不会自动调用父构造函数。

在子构造函数中必须手动调用父构造函数。

abstract class view
{
 public $vieverid;
 function __construct($viewerid) {
  $this->viewer = $viewerid;
 }
}
class viewactor extends view{
 function __construct($viewerid) {
  parent::__construct($viewerid); // manual call
  // do your stuff here...
  $this->viewerid = $viewerid;
 }

parent::__construct(params);调用超类构造器的用法

PHP4的

PHP不会从类中自动调用基类的构造函数派生类的构造函数。宣传是你的责任在适当的上游调用构造函数。

PHP5

如果定义了新的构造函数,PHP不会调用基类的构造函数。如果为派生类定义构造函数宣传是你的责任在适当的地方调用上游构造函数。父::__construct (params)

构造函数

abstract class view
{
 public $vieverid;
 function __construct($viewerid) {
  $this->vieverid= $viewerid;
 }
}
class viewactor extends view{
 function __construct($viewerid) {
   parent::__construct($viewerid);
   // Extra code if you want
 }
}
class viewactor_construct extends view{
    // Works in PHP5
}

如果子类定义了构造函数,则不会隐式调用父构造函数。为了运行父构造函数,需要在子构造函数中调用parent::__construct()。

看到