PHP面向对象 1.9 多态性的应用

时间:2023-02-24 18:39:44

面向对象除了封装和继承之外的另一个重要特性——多态性;

最直接的定义解释让具有继承关系的不同类对象,可以对相同名称的成员函数调用,产生不同的反应效果
多态性值得就是方法的重写。方法的重写是指一个子类中可以重新修改父类中的某些方法。使其具有自己的特征。

例如一个计算机的USB接口可以识别不同的USB设备

<?php
//定义一个计算机USB接口,让每个USB设备都遵守这个规范
interface USB{
function run();
}
//声明一个计算机类,去使用USB设置
class Computer{
//计算机类中的一个方法可以应用任何一种USB设备
function useUSB($usb){
$usb->run();
}
}

$computer = new Computer; //实例化一个计算机类对象

$computer -> useUSB(new Ukey()); //为USB插入一个USB键盘设备,并运行
$computer -> useUSB(new Umouse()); //为计算机插入一个USB鼠标设备,并运行
$computer -> useUSB(new UStore()); //为计算机插入一个USB存储设备,并运行

上面的代码中声明了一个接口USB,并在接口中声明了一个抽象方法run().目的就是定义一个规范,让每个USB设备都去遵守。也就是子类必须重写run()方法才能被计算机应用到。

<?php
//扩展一个usb键盘设置,实现usb接口
class Ukey implements USB{
//按键盘功能实现接口中的方法
function run(){
echo "运行USB键盘设备";
}
}

//扩展一个USB鼠标设置,实现USB接口
class Umouse implements USB{
//按鼠标的功能实现接口中的方法
function run(){
echo "运行USB鼠标设备";
}
}

//扩展一个USB存储设置,实现usb接口
class Ustore implements USB{
function run(){
echo "运行USB存储设备";
}
}