多态和类的高级使用技巧

多态(使用方式):
对于同一个方法,传入不同对象,实现了不同的效果,这个就是多态的意思,需要使用的技术:继承
或实现,方法的覆盖(重写)。

 1 <?php
 2 //多态应用(接入模式的实现)
 3 //定义一个接口,这是对外开放的接口,必须按照我的方法实现。
 4 interface PCI{
 5  public function start();
 6  public function stop();
 7 }
 8 //定义一个主板类,这是主板生产商的内部源码,不会公布
 9 class MainBoard{
10  //运行插在主板上pci设备。
11  public function running(PCI $pci){
12  $pci->start(); 
13  $pci->stop(); 
14  }
15 }
16 //========声卡厂家==========
17 class SoundCard implements PCI{
18  public function start(){
19  echo "声卡启动...<br/>";
20  }
21  public function stop(){
22  echo "声卡停用...<br/>";
23  }
24 }
25 //========网卡厂家==========
26 class NetworkCard implements PCI{
27  public function start(){
28  echo "网卡启动...<br/>";
29  }
30  public function stop(){
31  echo "网卡停用...<br/>";
32  }
33 }
34 //========显卡厂家==========
35 class DisplayCard implements PCI{
36  public function start(){
37  echo "显卡启动...<br/>";
38  }
39  public function stop(){
40  echo "显卡停用...<br/>";
41  }
42 }
43 //==========系统===============
44 $mb = new MainBoard();
45 $sc = new SoundCard();
46 $nc = new NetworkCard();
47 $dc = new DisplayCard();
48 $mb->running($sc);
49 $mb->running($nc);
50 $mb->running($dc);

 类的高级使用技巧

 1 <?php
 2 //类的高级使用技巧
 3 class A{
 4  public $num=0;
 5  public function fun($s){
 6  echo $s;
 7  return $this;
 8  }
 9  
10  public function add($m){
11  $this->num+=$m;
12  return $this;
13  }
14 }
15 $a = new A();
16 /*
17 $a->fun("aaaaa");
18 $a->fun("bbbbb");
19 $a->fun("ccccc");
20 */
21 //连续调用
22 $a->fun("aaaaaa")->fun("bbbbbb")->fun("ccccccc");
23 //连续调用
24 echo $a->add(10)->add(20)->add(30)->num;

 

posted @ 2019-01-14 19:47  街特闷  阅读(261)  评论(0)    收藏  举报