php怎么调用父类构造函数

在 PHP 中,一个类能够继承另一个类的属性和方法,通过这种方式能够实现代码的复用。当子类继承父类时,如果子类没有重写父类的构造函数,那么子类实例化时会自动调用父类的构造函数。如果子类重写了父类的构造函数,那么可以使用 parent::__construct() 来调用父类的构造函数。

那么,什么是构造函数呢?构造函数是一种特殊的函数,用于在实例化一个对象时自动调用。它的作用是为这个对象的属性进行初始化,以便于对象能够正确的使用。

假设有一个类 Animal,它有一个构造函数 __construct(),可以用来初始化动物的名称和年龄:

```

class Animal {

public $name;

public $age;

public function __construct($name, $age) {

$this->name = $name;

$this->age = $age;

}

}

```

现在有一个类 Dog,它从 Animal 类中继承了属性和方法,但它还有自己的一些属性和方法。在 Dog 类中,我们可以通过 parent::__construct() 方法调用 Animal 类的构造函数,以初始化 Dog 对象的名称和年龄:

```

class Dog extends Animal {

public $breed;

public function __construct($name, $age, $breed) {

parent::__construct($name, $age); // 调用父类构造函数进行初始化

$this->breed = $breed;

}

}

```

在这个例子中,我们创建了一个新的类 Dog,它有一个构造函数 __construct(),它接受三个参数:名称、年龄和品种。然后,它使用 parent::__construct() 方法调用 Animal 类的构造函数,以初始化 Dog 对象的名称和年龄。最后,它为 Dog 对象增加了一个品种属性。

下面,我们来看一个更复杂的例子:

```

class Person {

public $name;

public $age;

public function __construct($name, $age) {

$this->name = $name;

$this->age = $age;

}

}

class Employee extends Person {

public $employeeId;

public $salary;

public function __construct($name, $age, $employeeId, $salary) {

parent::__construct($name, $age);

$this->employeeId = $employeeId;

$this->salary = $salary;

}

public function getDetails() {

return "Name: " . $this->name . "\nAge: " . $this->age . "\nEmployee ID: " . $this->employeeId . "\nSalary: " . $this->salary;

}

}

$employee = new Employee("John Doe", 30, 12345, 5000);

echo $employee->getDetails();

```

在这个例子中,我们创建了一个 Person 类,它有一个构造函数 __construct(),用于初始化人的名称和年龄。然后,我们创建了一个 Employee 类,它从 Person 类中继承了属性和方法,并且增加了一个员工编号和薪水的属性。

在 Employee 类中,我们重写了父类的构造函数,并使用了 parent::__construct() 方法调用父类构造函数进行初始化。然后,我们增加了一个 getDetails() 方法,用于返回员工的详细信息。最后,我们实例化 Employee 对象,并调用它的 getDetails() 方法来输出员工的详细信息。

总结来说,当子类继承父类时,如果子类没有重写父类的构造函数,那么子类实例化时会自动调用父类的构造函数。如果子类重写了父类的构造函数,那么可以使用 parent::__construct() 来调用父类的构造函数。在子类的构造函数中,可以进行一些自己的操作,同时也要调用父类的构造函数进行属性的初始化,以便于对象能够正确的使用。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.ynyuzhu.com/

点赞(33) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部