本文指标:
一、理解PHP中形象类的界说
二、理解PHP中形象类的作用
三、理解PHP中形象类的应用场景
四、把握PHP中形象类的详细完成
仍是依照以前一向的思绪,咱们经过3W1H的形式进行学习,那末起首咱们来理解一下
(一)、理解PHP中形象类的界说(What)
形象类往往用来表征对成绩畛域进行剖析、设计中患上出的形象概念,是对一系列看下来没有同,然而实质上相反的详细概念的形象。通常正在编程语句顶用 abstract 润饰的类是形象类。
以及接口的没有同的地方正在于,接口中的办法都是没有完成的,只是单纯的界说,然而形象类中的办法是能够完成的。
(二)、理解PHP中形象类的作用(Why)
正在PHP中的类傍边,有不少类会被一直的重写,这个时分咱们能够应用形象类,怎样做呢?就是先写一个公共的类,而后实例化之后咱们能够反复去挪用。这样能够进步代码的可重用性
(三)、理解PHP中形象类的应用场景(Where)
一、假如发古代码中不少类都有类似或许独特的办法,咱们能够把这些相反或许类似的办法抽离进去,封装到形象类中。
形象类以及接口有点类似,能够这么说,接口是一个非凡的形象类,只不外接口外面全都是形象的办法,(所谓形象就是不详细的完成),然而形象类中的局部办法,是能够具有完成的性能,
(四)、把握PHP中形象类的详细完成(How)
总结:
一、形象类的界说经过abstract 界说,比方abstract class 类名{}
二、形象类的办法的界说也是经过abstract界说,比方abstract public function 办法名(){}
三、形象类是不克不及被实例化的
四、要承继一个形象类,经过要害字extends
五、形象类的子类必需要完成形象类中未完成的一切办法,也就是说要重写形象类中一切abstract的办法
六、形象类的子类尽管不完成形象类中的曾经完成的办法,同样能够挪用这些办法,其实连系承继咱们能够很好了解这点
每一个总结都是经过理论患上进去的,如今咱们用理论来演示总结,这样能够促成了解,让每一个总结了解起来愈加明晰,直观
(五)、详细代码
案例1、
理论指标:
一、形象类的界说经过abstract 界说,比方abstract class 类名{}
二、形象类的办法的界说也是经过abstract界说,比方abstract public function 办法名(){}
详细代码以下:
<?php abstract class Animal{ abstract public function eat();//形象办法 //呼吸 public function breath(){ //一切植物的呼吸办法都是同样的,就没有需求应用多态了 echo "呼吸<br/>"; } } ?>
案例2、
理论指标:
一、形象类是不克不及被实例化的
详细代码以下:
<?php abstract class Animal{ abstract public function eat();//形象办法 //呼吸 public function breath(){ //一切植物的呼吸办法都是同样的,就没有需求应用多态了 echo "呼吸<br/>"; } } $animal = new Animal(); ?>
运转后果为:
Fatal error: Uncaught Error: Cannot instantiate abstract class Animal in D:\E-class\class-code\classing\index.php:10 Stack trace: #0 {main} thrown in D:\E-class\class-code\classing\index.php on line 10
案例4、
理论指标:
一、要承继一个形象类,经过要害字extends
二、形象类的子类必需要完成形象类中未完成的一切办法,也就是说要重写形象类中一切abstract的办法
详细代码以下:
<?php abstract class Animal{ abstract public function eat();//形象办法 //呼吸 public function breath(){ //一切植物的呼吸办法都是同样的,就没有需求应用多态了 echo "呼吸<br/>"; } } //界说山公 class Monkey extends Animal{ } ?>
假如Monkey类承继了形象类,但没有完成外面的abstract办法,那末运转后果为:
Fatal error: Class Monkey contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Animal::eat) in D:\E-class\class-code\classing\index.php on line 13
接上去咱们来完成abstract办法
详细代码以下:
<?php abstract class Animal{ abstract public function eat();//形象办法 //呼吸 public function breath(){ //一切植物的呼吸办法都是同样的,就没有需求应用多态了 echo "呼吸<br/>"; } } //界说山公 class Monkey extends Animal{ //完成形象类中的形象办法 public function eat(){ echo "我是山公类中的eat办法<br/>"; } } $monkey = new Monkey(); $monkey->eat(); ?>
运转后果以下:
我是山公类中的eat办法
案例5、
理论指标:
一、形象类的子类尽管不完成形象类中的曾经完成的办法,同样能够挪用这些办法,其实连系承继咱们能够很好了解这点
详细代码以下:
<?php abstract class Animal{ abstract public function eat();//形象办法 //呼吸 public function breath(){ //一切植物的呼吸办法都是同样的,就没有需求应用多态了 echo "形象类中的呼吸办法<br/>"; } } //界说山公 class Monkey extends Animal{ //完成形象类中的形象办法 public function eat(){ echo "我是山公类中的eat<br/>"; } } $monkey = new Monkey(); $monkey->eat(); $monkey->breath(); ?>
运转后果以下:
我是山公类中的eat
形象类中的呼吸办法
(六)、学致使用
成绩:将如下实在场景,用形象类复原进去
小芳下学回抵家中,一进家门,只见心爱的小狗“小爱”即刻就对客人摇起了尾巴,小芳笑了笑,走过来,抱起了小狗,最初,小芳以及小狗亲了一口
思绪剖析:
一、工具剖析:先生,小狗
二、工具属性剖析:连系(事实世界+详细场景)
先生:称号
狗:称号
三、工具办法剖析:连系(事实世界+详细场景)
先生:
(1)、下学
(2)、回抵家中
(3)、走路
(4)、看
(5)、笑
(6)、抱货色
(7)、亲嘴
狗:
(1)、看
(2)、摇尾巴
(3)、亲嘴
四、咱们发现这2个工具都有类似的办法,看,亲嘴,以是咱们能够把它们封装到形象类中,而且这2个办法没有需求子类去重写,由于都是同样的
详细代码以下:
<?php abstract class Animal{ //看 public function look($obj){ //一切植物的呼吸办法都是同样的,就没有需求应用多态了 echo "瞥见了".$obj->name."<br/>"; } //亲嘴 public function kiss($fromobj,$toobj){ echo $fromobj->name."亲了".$toobj->name."一口<br/>"; } } //先生 class Student extends Animal{ public $name = ""; public function __construct( $name ){ $this->name = $name; } // 一、下学 public function offschool(){ echo $this->name."下学了<br/>"; } //回家 public function goHome(){ echo $this->name."回抵家中<br/>"; } // 二、走路 public function walk(){ echo $this->name."走了过来<br/>"; } // 三、看 // 四、笑 public function smile(){ echo $this->name."浅笑了<br/>"; } // 五、抱货色 public function hug($obj){ echo $this->name."抱起了".$obj->name."<br/>"; } // 六、亲嘴 } //狗 class Dog extends Animal{ public $name = ""; public function __construct( $name ){ $this->name = $name; } //一、看 //二、摇尾巴 public function wagTail(){ echo $this->name."摇了尾巴<br/>"; } //三、亲嘴 } //创立工具 $xf = new Student("小芳"); $dog = new Dog("小爱"); //小芳下学了 $xf->offschool(); //小芳下学回抵家中,一进家门,只见心爱的小狗“小爱”即刻就对客人摇起了尾巴,小芳笑了笑,走过来, //抱起了小狗,最初,小芳以及小狗亲了一口 //小芳答复家中 $xf->goHome(); //小芳瞥见小狗 $xf->look($dog); //小狗摇尾巴 $dog->wagTail(); //小芳笑了笑 $xf->smile(); //小芳走过来 $xf->walk(); //抱起小狗 $xf->hug($dog); //小芳亲了小狗 $xf->kiss($xf,$dog); //小狗也亲了小芳 $dog->kiss($dog,$xf); ?>
运转后果为:
小芳下学了
小芳回抵家中
瞥见了小爱
小爱摇了尾巴
小芳浅笑了
小芳走了过来
小芳抱起了小爱
小芳亲了小爱一口
小爱亲了小芳一口
(七)、总结
一、本文次要解说了PHP中形象类的界说,作用和详细的完成
心愿本文能给各人带来肯定的协助,谢谢!!!
以上就是PHP面向工具之形象类详解(代码实例)的具体内容,更多请存眷资源魔其它相干文章!
标签: php开发教程 php开发资料 php开发自学 面向对象
抱歉,评论功能暂时关闭!