PHP基础OOP(二)多态
在PHP面向对象编程中,多态是一种重要的概念。多态允许我们使用相同的方法名来处理不同的对象类型,从而提高代码的可重用性和灵活性。在本文中,我们将介绍PHP基础OOP(二)多态的完整攻略。
步骤
以下是PHP基础OOP(二)多态的步骤:
-
创建父类。
-
创建子类,并重写父类方法。
-
创建多个子类对象,并调用相同的方法。
示例
以下是两个示例,演示如何在PHP中使用多态。
示例1:使用多态处理不同的对象类型
在此示例中,我们将创建一个Animal父类和两个子类Dog和Cat。我们将重写Animal类的makeSound()方法,并创建多个Dog和Cat对象,并调用它们的makeSound()方法。
// Animal.php
class Animal {
public function makeSound() {
echo "The animal makes a sound.";
}
}
// Dog.php
class Dog extends Animal {
public function makeSound() {
echo "The dog barks.";
}
}
// Cat.php
class Cat extends Animal {
public function makeSound() {
echo "The cat meows.";
}
}
// index.php
require_once 'Animal.php';
require_once 'Dog.php';
require_once 'Cat.php';
$animal = new Animal();
$dog = new Dog();
$cat = new Cat();
$animal->makeSound();
echo "<br>";
$dog->makeSound();
echo "<br>";
$cat->makeSound();
在以上示例中,我们创建了一个Animal父类和两个子类Dog和Cat。我们重写了Animal类的makeSound()方法,并在Dog和Cat类中实现了自己的makeSound()方法。然后,我们创建了一个Animal对象、一个Dog对象和一个Cat对象,并分别调用它们的makeSound()方法。由于Dog和Cat类重写了makeSound()方法,它们的makeSound()方法将覆盖Animal类的makeSound()方法。
示例2:使用多态处理相同的对象类型
在此示例中,我们将创建一个Shape父类和两个子类Circle和Rectangle。我们将重写Shape类的getArea()方法,并创建多个Circle和Rectangle对象,并调用它们的getArea()方法。
// Shape.php
abstract class Shape {
abstract public function getArea();
}
// Circle.php
class Circle extends Shape {
private $radius;
public function __construct($radius) {
$this->radius = $radius;
}
public function getArea() {
return pi() * pow($this->radius, 2);
}
}
// Rectangle.php
class Rectangle extends Shape {
private $width;
private $height;
public function __construct($width, $height) {
$this->width = $width;
$this->height = $height;
}
public function getArea() {
return $this->width * $this->height;
}
}
// index.php
require_once 'Shape.php';
require_once 'Circle.php';
require_once 'Rectangle.php';
$shapes = array(
new Circle(5),
new Rectangle(10, 5),
new Circle(10)
);
foreach ($shapes as $shape) {
echo "Area: " . $shape->getArea() . "<br>";
}
在以上示例中,我们创建了一个Shape抽象类和两个子类Circle和Rectangle。我们重写了Shape类的getArea()方法,并在Circle和Rectangle类中实现了自己的getArea()方法。然后,我们创建了一个包含多个Circle和Rectangle对象的数组,并使用foreach循环遍历数组,并调用每个对象的getArea()方法。由于Circle和Rectangle类都继承自Shape类,并重写了getArea()方法,它们的getArea()方法将覆盖Shape类的getArea()方法。
结论
通过以上步骤和示例,我们了解了如何在PHP中使用多态。在实际应用中,我们可以使用多态处理不同的对象类型或相同的对象类型,从而提高代码的可重用性和灵活性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php基础oop(二)多态 - Python技术站