由于工作中要用到PHP,最近下了本《PHP5 POWER PROGRAMMING》在读,外文的,还不错,打算写些读书心得,可能会零散些。这次讲的是多态。
首先看一个例子,是讲动物发出的叫声的。
class Cat {
function miau()
{
print "miau";
}
}
class Dog {
function wuff()
{
print "wuff";
}
}
function printTheRightSound($obj)
{
if ($obj instanceof Cat) {
$obj->miau();
} else if ($obj instanceof Dog) {
$obj->wuff();
} else {
print "Error: Passed wrong kind of object";
}
print "\n";
}
printTheRightSound(new Cat());
printTheRightSound(new Dog());
这里输出的是:
miau(猫的叫声)
wuff(狗的叫声)
熟悉OOP的都知道,这个例子扩展性不好,因为如果你要加入更多动物的话,需要用很多个IF ELSE来判断,而且要重复写很多代码,有了多态后,就好办了。PHP5中终于有多态这东西了,多个子类可以扩展继承父类,上面的例子改写如下:
class Animal {
function makeSound()
{
print "Error: This method should be re-implemented in the children";
}
}
class Cat extends Animal {
function makeSound()
{
print "miau";
}
}
class Dog extends Animal {
function makeSound()
{
print "wuff";
}
}
function printTheRightSound($obj)
{
if ($obj instanceof Animal) {
$obj->makeSound();
} else {
print "Error: Passed wrong kind of object";
}
print "\n";
}
printTheRightSound(new Cat());
printTheRightSound(new Dog());
可以看出,这个时候,无论增加什么动物,printtherightsound方法是不需要 进行任何修改的了!当然,大家学过OOP的可以看出,这个例子可以进一步修改,就是将ANIMAL声明为抽象基类拉。
分享到:
相关推荐
php学习心得 php初学者 实用 快速入门版
php入门学习心得 希望对php的爱好做能有帮助
php学习心得,是关于php从新手如何学习,如何进步的,以及在php学习过程的一些感悟
最近由于工作的原因开始研究Laravel5,不得不说我在第一步安装就被坑着了,下面就是我痛苦的学习成果。Laravel对我来说完全是新东西,如果内容有误,烦请留言或QQ我,帮我纠正错误,感激不尽!!! 1.首先安装php,...
PHP、Mysql实训心得体会.doc
PHP文档,包含PHP基本语法 内置函数和方法,简单PHP网页,PHP工具的安装等,现在奉献给大家哦。
php学习心得.doc
相信很多人都需要这样一份有关微信开发的资料,从基本功能到通用,curl都有说道。可以互相交流
一起学些脚本语言!php有些方面还是挺不错的!
php培训心得体会.doc
php学习心得范文.doc
接着后天就要回福州了,由于家里还没装网络,因此,得有一段时间不能来论坛了,在这之前,我想了下,我给新手解答过问题,演示过代码,好像没谈过自己的学习心得,临走之前,我就来谈谈我学习PHP的心得,虽然是老生...
PHP Cookbook读书笔记 – 第15章创建Web服务.docx
PHP53安装分析心得.doc
。
。
php工作心得体会.docx
php实训心得.docx
php实训心得体会.docx
高职院校PHP课程教学心得.pdf