📅  最后修改于: 2023-12-03 15:09:14.073000             🧑  作者: Mango
在PHP中,一个类可以继承自另一个类,并且可以通过继承获得父类的属性和方法。这种继承关系可以用一个关键词 extends
来实现。
首先,我们需要定义一个基类(即父类),这个基类中包含我们想要继承的属性和方法。下面是一个简单的 Person
基类的定义,它包含两个属性以及两个方法:
class Person {
protected $name;
protected $age;
public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
public function sayHello() {
echo "Hello, my name is {$this->name}.";
}
}
这个基类包含了一个构造函数 __construct()
和一个公共的方法 sayHello()
。注意到 $name
和 $age
属性被声明为 protected
。这意味着子类可以访问这些属性,但是其他代码不可以。
接下来,我们需要定义一个子类(即派生类),这个子类继承自我们刚才定义的 Person
基类。你可以通过使用 extends
关键词将子类定义为基类的一个扩展。我们将一个新的属性 $gender
添加到这个子类中,然后重写 sayHello()
方法。下面是子类 Student
的定义:
class Student extends Person {
protected $gender;
public function __construct($name, $age, $gender) {
parent::__construct($name, $age);
$this->gender = $gender;
}
public function sayHello() {
parent::sayHello();
echo " I am a {$this->gender}.";
}
}
Student
继承了 Person
基类,并添加了一个新的属性 $gender
。在构造函数中我们使用了 parent::__construct()
来调用基类的构造函数。这意味着在创建 Student
对象时,我们需要传递 $name
和 $age
参数,然后 $gender
属性被初始化。
Student
子类还重写了 sayHello()
方法,它首先使用 parent::sayHello()
来调用基类的方法,然后添加了一个额外的字符串来指明这个学生的性别。
最后,我们可以创建一个 Student
对象,并调用它的 sayHello()
方法:
$student = new Student('Peter', 21, 'male');
$student->sayHello();
这将输出:
Hello, my name is Peter. I am a male.
我们可以看到,Student
子类成功继承了 Person
基类,并重写了 sayHello()
方法。通过这个简单的例子,我们可以了解如何在PHP中继承一个类。