什么是多态?

多态按字面上意思理解就是”多种形状”。可以理解为多种表现形式,即“一个对外接口(方法),多个内部实现”

在面向对象的理论中,多态性的一般定义为:同一个操作(函数)做用于不同的类的实例(那电脑的USB接口举例、你插U盘是读数据、你插音箱是放音乐),将产生不同的执行结果。也即不同类的对象收到相同的消息时,将得到不同的结果。

流程控制实现多态

//流程控制实现多态
class Light{

    public function show($type=0){
        switch($type){
            case 0:
                echo "灯光是红色~<br/>";
                break;
            case 1:
                echo "灯光是绿色~<br/>";
                break;
            case 2:
                echo "灯光是蓝色~<br/>";
                break;
            default:
                echo "随机颜色~<br/>";
                break;
        }
    }
}

class User{
    function openLight($type=0){
        $light=new Light();
        $light->show($type);
    }
}
$list=new User();
$list->openLight(0);

继承方式实现多态

<?php
//继承方式实现多态
class Light{ //也可把他设置为 abstract

    public function show(){
        echo "灯光是随机颜色~~<br/>";
    }
}
class BlueLight extends  Light {
    function show(){
        echo "灯光颜色是蓝色~~<br/>";
    }
}

class GreenLight extends  Light {
    function show(){
        echo "灯光颜色是绿色~~<br/>";
    }
}
class User{
    function openLight(Light $obj){
        $obj->show();
    }
}
$list=new User();
$light=new Light();
$list->openLight($light);
$BlueLight= new BlueLight();
$list->openLight($BlueLight);
$GreenLight= new GreenLight();
$list->openLight($GreenLight);

接口方式实现多态

<?php

//接口方式实现多态
interface Light{ //也可把他设置为 abstract

    public function show();
}
class BlueLight implements  Light {
    function show(){
        echo "灯光颜色是蓝色~~<br/>";
    }
}

class GreenLight implements  Light {
    function show(){
        echo "灯光颜色是绿色~~<br/>";
    }
}
class User{
    function openLight(Light $obj){
        $obj->show();
    }
}
$list=new User();

$BlueLight= new BlueLight();
$list->openLight($BlueLight);
$GreenLight= new GreenLight();
$list->openLight($GreenLight);
Last modification:January 7, 2020
如果觉得我的文章对你有用,请随意赞赏