1. 第一节:类继承
在PHP中,类继承是一种重要的面向对象编程概念。类继承允许一个类(称为派生类或子类)继承另一个类(称为基类或父类)的属性和方法。这种继承关系可以通过extends
关键字来实现。
类继承的核心概念是基类定义了一组公用的属性和方法,派生类可以继承这些属性和方法,并且还可以添加自己的新属性和方法。这样,派生类就可以重用基类的代码,从而减少代码的重复性。
1.1 单继承
PHP中的类继承是单继承的,这意味着一个派生类只能继承一个基类。这种设计选择是为了简化类继承的语法和语义,同时保持代码结构的清晰和可维护性。
单继承使得类继承的层级关系更加清晰明了。一个类只有一个父类,这使得代码的逻辑结构更加直观。此外,单继承还可以避免多重继承带来的麻烦和复杂性。
1.2 继承关系
在继承关系中,子类继承父类的属性和方法。子类可以通过parent
关键字来访问父类的成员。这使得子类可以在继承基础上进行进一步的扩展。
class Animal {
protected $name;
public function __construct($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
class Cat extends Animal {
public function speak() {
return "Meow!";
}
}
$cat = new Cat("Tom");
echo $cat->getName(); // 输出 "Tom"
echo $cat->speak(); // 输出 "Meow!"
在上面的示例中,Cat
类继承了Animal
类的getName()
方法,并且添加了一个speak()
方法。这样,Cat
类可以通过继承和扩展来实现自己的行为。
1.3 重写
在类继承中,派生类可以重写基类的方法。这种重写行为允许派生类修改或扩展基类的行为。
class Animal {
public function speak() {
return "Sound!";
}
}
class Cat extends Animal {
public function speak() {
return "Meow!";
}
}
$animal = new Animal();
echo $animal->speak(); // 输出 "Sound!"
$cat = new Cat();
echo $cat->speak(); // 输出 "Meow!"
在上面的示例中,由于Cat
类重写了Animal
类的speak()
方法,因此Cat
类的实例调用speak()
方法时会返回"Meow!",而Animal
类的实例调用speak()
方法时会返回"Sound!"。