Home >php教程 >php手册 >深入解读PHP抽象类abstract的应用

深入解读PHP抽象类abstract的应用

WBOY
WBOYOriginal
2016-06-13 11:09:00993browse

记得在哪里看见这样一句话,抽象类就把类像的部分抽出来,这句看上去很搞笑,其实它说出了抽象类的真理,抽象类的作用是,当你发现你的很多类里面用很多方法你不断的在重复写,那你就可以考虑使用抽象类了,你可能会说“我不是可以重写一个类每个公共类我个实例化一个这个公共类,调用相同的方法就可以了”,这里是可以,实际上抽象类做的工作也就是这个,不过他省去了你实例化的这个步骤,让你就像直接调用PHP抽象类abstract方法一样方便,而且你还可以重载这个方法。如:

<ol class="dp-xml">
<li class="alt"><span><span>abstract class BaseShop  </span></span></li>
<li><span>{  </span></li>
<li class="alt"><span>public function buy($gid)  </span></li>
<li><span>{  </span></li>
<li class="alt"><span>echo('你购买了ID为 :'.$gid.'的商品');  </span></li>
<li><span>}  </span></li>
<li class="alt"><span>public function sell($gid)  </span></li>
<li><span>{  </span></li>
<li class="alt"><span>echo('你卖了ID为 :'.$gid.'的商品');  </span></li>
<li><span>}  </span></li>
<li class="alt"><span>public function view($gid)  </span></li>
<li><span>{  </span></li>
<li class="alt"><span>echo('你查看了ID为 :'.$gid.'的商品');  </span></li>
<li><span>}  </span></li>
<li class="alt"><span>}  </span></li>
<li><span>class BallShop extends BaseShop  </span></li>
<li class="alt"><span>{  </span></li>
<li>
<span>var $</span><span class="attribute">itme_id</span><span> = </span><span class="attribute-value">null</span><span>;  </span>
</li>
<li class="alt"><span>public function __construct()  </span></li>
<li><span>{  </span></li>
<li class="alt">
<span>$this-</span><span class="tag">></span><span class="attribute">itme_id</span><span> = </span><span class="attribute-value">2314</span><span>;  </span>
</li>
<li><span>}  </span></li>
<li class="alt"><span>public function open()  </span></li>
<li><span>{  </span></li>
<li class="alt">
<span>$this-</span><span class="tag">></span><span>sell($this-</span><span class="tag">></span><span>itme_id);  </span>
</li>
<li><span>}  </span></li>
<li class="alt"><span>} </span></li>
</ol>

这里是一个例子,想上面一样我定义了一个商店类,抽出了它所有像的部分,买(buy),卖(sell),看(view),并且抽象类里都实现了这些方法,那么继承它的子类就自动获得了这些方法,子类就做它自己独特的东西,介绍代码的重复,提高复用性。

结论: PHP抽象类abstract就是一个类的服务提供商,拥有众多服务,你不用必须用,当需要的时候你来用就可以,如果你觉得不提供服务不满意,你还可以自己来做。


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn