本文指标:
一、理解多态的界说
二、理解多态的作用
三、理解多态的应用场景
四、把握多态的详细完成
仍是依照以前一向的思绪,咱们经过3W1H的形式进行学习,那末起首咱们来理解一下
(一)、理解多态的界说
由于接口的办法完成能够有不少,以是关于接口外面界说的办法的详细完成是多种多样的,这类特点咱们称作“多态”
-比方接口A有2个完成B以及C,B以及C对A外面界说的办法能够是没有同的,这类景象就是多态
(二)、理解多态的作用
作用就是能够让一个接口能够有没有同的完成,这样使患上代码愈加贴合于实在世界,这样的形式拉近了代码以及实在世界的间隔,从而闪开发者们能愈加不便地去完成完成中的一些复杂的营业逻辑
(三)、理解多态的应用场景
其实这个应用场景,正在咱们一旦决议用接口的时分,这类景象就会呈现,由于一旦一个接口有没有同的完成类的时分,根本上这类景象就会发作,由于不少时分咱们心愿一个接口外面的某个或许多个办法,能够有没有同的详细完成
-比方吃的办法,每一个植物有每一个植物的服法,老鼠以及猫都是间接吃,没有会去思考讲没有考究卫生,以是没有会去把食品先洗一下再吃,然而人呢,是初级植物,以是城市考究根本的卫生(精神病的除了外),会去洗一下再吃,并且还会判别有些货色必需要煮熟了再吃,并且由于文明的差别,每一个国度的人的服法也没有同,比方印度人间接用手吃,而中国人是用筷子吃,而东方有些国度则是用叉子,吃有没有同的服法,这正在事实生存里长短经常见的,那另有不少事件也都是如斯,以是多态的这类景象也长短常普遍,而咱们写代码是应用面向工具编程的形式写,以是难免也会遇到“多态”,并且为了让咱们的代码愈加贴合实在世界,咱们也必需应用“多态”
(四)、把握多态的详细完成
总结:
一、多态的界说就是每一个接口能够有多个没有同的完成
每一个总结都是经过理论患上进去的,如今咱们用理论来演示总结,这样能够促成了解,让每一个总结了解起来愈加明晰,直观
(五)、详细代码
一、案例一
理论指标:
一、多态的界说就是每一个接口能够有多个没有同的完成
<?php //界说吃的接口 interface Eat{ public function eat(); } //界说猫的类 class Cat implements Eat{ public function eat(){ echo "我是猫,抓到喜爱的老鼠,间接吃<br/>"; } } //界说人 class Human implements Eat{ public function eat(){ echo "我是人,吃货色以前,城市洗一下再吃,由于我要考究根本的卫生<br/>"; } } function Eat( $obj ){ if( $obj instanceof Eat ){ $obj->eat(); }else{ echo "该工具不完成Eat的办法<br/>"; } } $cat = new Cat(); $zs = new Human(); //这行代码看出,一个吃的办法,通报没有同的详细完成,后果就是能够有没有同的完成,这就是多态 Eat($cat); Eat($zs); ?>
运转后果为:
我是猫,抓到喜爱的老鼠,间接吃
我是人,吃货色以前,城市洗一下再吃,由于我要考究根本的卫生
(六)、学致使用
成绩:用面向工具的编程形式模仿出如下实在的场景,代码要能表现出多态的概念
一个乡村白叟小刘,养了5鸡,以及5只狗,天天早上,他城市6点准时起床,煮稀饭,吃完稀饭后,而后他会提着2小桶食品去给鸡以及鸭喂食,走到鸡栏边,它把此中的一桶米倒入鸡食槽里,走到狗窝旁,又把剩下的装有残羹剩菜的一桶食品倒入狗狗吃的食槽里
思绪剖析:
一、工具剖析:外面的工具有白叟,鸡,狗,食品 以是至多有这4个类
二、工具属性剖析:(连系详细的场景+事实世界)
白叟:称号
鸡:个数
狗:个数
食品:称号
三、工具办法剖析:(连系详细的场景+事实世界)
白叟:起床,煮稀饭,吃(吃稀饭),喂食
鸡:吃(啄米吃)
狗:吃(吃骨头)
食品:设置食品称号
四、综上剖析,咱们发现此中3个工具都有吃的办法,然而他们辨别有没有同的服法,以是咱们能够把这个公共办法抽离进去做成一个接口,而后让这3个类辨别去完成它
详细完成代码以下:
<?php //界说吃的接口 interface Eat{ public function eat($food); } //界说食品 class Food{ public $name = ""; public function __construct( $name ){ $this->name = $name; } } //界说人 class Human implements Eat{ public $name = ""; public function __construct( $name ){ $this->name = $name; } //起床 public function wakeup(){ echo $this->name."起床了<br/>"; } //煮稀饭 public function cook($food){ echo $this->name."煮".$food->name."了<br/>"; } public function eat($food){ echo $this->name."吃了".$food->name."<br/>"; } //喂食 function startFeed( $obj,$food ){ if( $obj instanceof Eat ){ $obj->eat($food); }else{ echo "该工具不完成Eat的办法<br/>"; } } public function feed($obj, $food){ $this->startFeed( $obj,$food ); } } //界说鸡的类 class Chiken implements Eat{ public $count = 5; public function eat($food){ echo $this->count."只小鸡们,都吃了".$food->name."<br/>"; } } //界说狗的类 class Dog implements Eat{ public $count = 5; public function eat($food){ echo $this->count."只小狗们,都吃了".$food->name."<br/>"; } } //创立工具 $xiaoliu = new Human("小刘"); $chikens = new Chiken(); $dogs = new Dog(); //创立食品 $xfFood = new Food("稀饭"); $seedsFood = new Food("米"); $mealFood = new Food("残羹剩饭"); //白叟起床 $xiaoliu->wakeup(); //白叟煮稀饭 $xiaoliu->cook($xfFood); //白叟吃稀饭 $xiaoliu->eat( $xfFood ); //白叟喂食开端 $xiaoliu->feed($chikens,$seedsFood);//给小鸡喂食 $xiaoliu->feed($dogs,$mealFood);//给小狗喂食 ?>
运转后果为:
小刘起床了
小刘煮稀饭了
小刘吃了稀饭
5只小鸡们,都吃了米
5只小狗们,都吃了残羹剩饭
(七)、总结
一、本文次要是讲了多态的界说以及作用,和详细的完成
心愿本文能给各人带来肯定的协助,谢谢!!!
以上就是PHP面向工具之多态详解(代码实例)的具体内容,更多请存眷资源魔其它相干文章!
标签: php开发教程 php开发资料 php开发自学 面向对象
抱歉,评论功能暂时关闭!