本文指标:
一、理解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开发自学 面向对象
抱歉,评论功能暂时关闭!