php-多态的理解
一、前情引入
面向对象语言的三大特性:封装、继承、多态
- 封装是类的构建过程,php具有;
- php也具有继承的特性。
- 由于php是弱类型语言,因此多态体现地十分模糊。
定义:多态是指在面向对象中能够根据使用类的上下文来重新定义或改变类的性质和行为。
二、php多态
举例说明:
<?php /** 教师类有一个drawPolygon()方法需要一个Polygon类,用来画多边形,此方法内部调用多边形的draw()方法, 但由于弱类型,我们可以传入Circle类,就会调用Circle类的draw方法,这就事与愿违了。 甚至可以传入阿猫、阿狗类,如果这些类没有draw()方法还会报错。 */ class Teacher{ function drawPolygon($polygon){ $polygon->draw(); } } class Polygon{ function draw(){ echo "draw a polygon"; } } class Circle{ function draw(){ echo "draw a circle"; } } ?>
可以看出这样灵活的多态,需要一些控制,在PHP5.3以后可以对参数做类型限制,如下:
// 仿java,在变量参数前加一个限制类名 function drawPolygon(Polygon $polygon){ $polygon->draw(); }
相关推荐
caojhuangy 2020-10-12
lynjay 2020-06-06
jameszgw 2020-06-03
Greatemperor 2020-05-17
HongKongPython 2020-05-12
宿舍 2020-05-06
Darklovy 2020-04-29
austindev 2020-04-25
sunnyJam 2020-04-15
fly00love 2020-03-08
ladysosoli 2020-03-01
llwang0 2020-02-29
TreasureZ 2020-02-22
jacktangj 2020-02-19
明天你好 2020-02-18
katyusha 2020-02-16
wangqing 2020-02-13
vanturman 2020-02-10
Winterto0 2020-01-28