什么是多态?
多态按字面上意思理解就是”多种形状”
。可以理解为多种表现形式,即“一个对外接口(方法),多个内部实现”
。
在面向对象的理论中,多态性的一般定义为:同一个操作(函数)做用于不同的类的实例(那电脑的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);