答案:
继承是一种面向对象的编程技术,它允许一个类(子类)从另一个类(父类)继承属性和方法。通过继承,子类可以重用父类的代码,并且可以根据需要添加新的功能。
在PHP中,使用 extends 关键字来实现类的继承。例如:
class Animal {
public function makeSound() {
echo "Animal is making a sound.";
}
}
class Cat extends Animal {
public function makeSound() {
echo "Meow!";
}
}
在上面的例子中,Cat 类继承了 Animal 类,可以使用 makeSound() 方法,并覆盖(重写)该方法,使其输出 Meow!。
多态是面向对象编程中的另一个重要概念,它允许使用同样的方法名调用不同的对象,并根据对象的类型执行不同的操作。多态可以提高代码的可读性和可维护性,使代码更加灵活和可扩展。
在PHP中,多态可以通过继承和接口来实现。例如:
interface Shape {
public function getArea();
}
class Rectangle implements Shape {
private $width;
private $height;
public function __construct($width, $height) {
$this->width = $width;
$this->height = $height;
}
public function getArea() {
return $this->width * $this->height;
}
}
class Circle implements Shape {
private $radius;
public function __construct($radius) {
$this->radius = $radius;
}
public function getArea() {
return pi() * pow($this->radius, 2);
}
}
在上面的例子中,Shape 接口定义了一个 getArea() 方法,Rectangle 和 Circle 类实现了这个接口,并实现了自己的 getArea() 方法。当我们需要计算一个形状的面积时,可以通过多态来调用这个方法,例如:
$shapes = [
new Rectangle(10, 20),
new Circle(5),
];
foreach ($shapes as $shape) {
echo $shape->getArea();
}
在上面的例子中,$shapes 数组包含了一个 Rectangle 对象和一个 Circle 对象,但是在循环中,我们只需要调用每个对象的 getArea() 方法来计算它们的面积,而不需要知道对象的具体类型。这就是多态的作用。