php多态的理解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
php多态的理解
PHP是一种面向对象的编程语言,支持多态的特性。
所谓多态,
就是同一个方法可以被不同的对象调用,产生不同的结果。
在PHP中,实现多态的关键是要理解抽象类和接口的概念。
1.了解抽象类
抽象类是一种特殊的类,它不能被实例化。
抽象类的作用是为它
的子类定义一组通用的方法或属性,但是这些方法或属性的具体实现
由子类来完成。
如果一个类继承了抽象类,那么它必须实现抽象类中
定义的所有抽象方法,否则它也要变成抽象类。
例如,我们定义了一个抽象类Animal,它定义了一个抽象方法
run():
abstract class Animal {
abstract public function run();
}
然后我们定义了两个具体的子类,Dog和Cat,它们都必须实现
run()方法:
class Dog extends Animal {
public function run() {
echo "狗在跑";
}
}
class Cat extends Animal {
public function run() {
echo "猫在跑";
}
}
现在我们可以创建一个Animal类型的对象,让它调用run()方法:
$animal1 = new Dog();
$animal1->run(); //输出:"狗在跑"
$animal2 = new Cat();
$animal2->run(); //输出:"猫在跑"
我们可以看到,Animal的run()方法被不同的对象调用,但是输出的结果是不同的,这就是多态的体现。
2.了解接口
接口是一种定义了一组方法的规范,但是没有提供具体的实现。
一个类可以实现多个接口,从而支持不同的行为。
例如,我们定义了一个接口Runnable,它规定了一个方法run():interface Runnable {
public function run();
}
然后我们定义了两个具体的类,Dog和Car,它们分别实现了Runnable接口:
class Dog implements Runnable {
public function run() {
echo "狗在跑";
}
}
class Car implements Runnable {
public function run() {
echo "汽车在跑";
}
}
现在我们可以创建一个Runnable类型的对象,让它调用run()方法:
$object1 = new Dog();
$object1->run(); //输出:"狗在跑"
$object2 = new Car();
$object2->run(); //输出:"汽车在跑"
我们可以看到,Runnable的run()方法被不同的对象调用,但是
输出的结果是不同的,这也是多态的体现。
综上所述,PHP中的多态是一种面向对象编程的特性,它可以让同一个方法被不同的对象调用,产生不同的结果。
要实现多态,我们需要理解抽象类和接口的概念,并且在定义类时注重设计。