10大优享服务
62项会员特权

php接口开发 抽象类和接口的概念

发布时间:2021-12-01 04:14:42     阅读次数:9902次     评论数:0次

  php接口开发主要是通过类的应用来实现的,抽象类是php接口开发中的一个类,那么 抽象类和接口的概念是怎样的呢?下面一品威客网小编来给大家关于php接口开发 抽象类和接口的概念的详细介绍,希望能够给大家帮助。

php接口开发 抽象类和接口的概念

  抽象类,一个子类只能有一个父类;A extends B . 这样A就拥有了B的所有方法和功能,但当A还想拥有C的功能的时候。就不能通过 A extends C 来实现, 而需要走一些弯路。目前系统架构的趋势就是由针对抽象(接口,抽象类)而不是具体编程,并且将功能尽可能的细分。 这就需要通过实现多个接口的方式来实现,显然,抽象类无法提供这样的功能。从系统重构的角度来说,一个具体类抽象出接口是十分方便的。只需要写一个接口,里面定义具体类的所有方法,然后在为这个具体类implement这个接口就可以了。而抽象类就要复杂的多,比如说 B extends A , C extends B 如果想要为c抽象出一个抽象类D的话,就需要找到它的最顶层A来从头做起,因为无法做到C extends D ,继承抽象类的时候不需要实现全部方法,但此子类还是abstract的,无法实例化

  大多数情况下,抽象类至少包含一个抽象方法。抽象方法用abstract关键字声明,其中不能有具体内容。可以像声明普通类方法那样声明抽象方法,但要以分号而不是方法体结束。

  复制代码

  1

  2 abstract class Simple

  3 {

  4 protected $arr = array();

  5

  6 public function say()

  7 {

  8 echo "hello";

  9 }

  10

  11 abstract public function write();

  12 }

  13

  14 class Writer extends simple

  15 {

  16 public function write()

  17 {

  18 // .....具体实现

  19 }

  20 }

  21 ?>

  复制代码

  在PHP 4中,我们可以用包含警告或die()语句模拟抽象类。

  复制代码

  1

  2 class AbstractClass

  3 {

  4 function abstractFunction()

  5 {

  6 die("AbstractClass::abstractFunction() is abstractn");

  7 }

  8 }

  9 ?>

  复制代码

  抽象类(abstract)优于接口(interface)的地方:

  1. B继承A,C也继承A,假设类B、C中继承的fun1这个方法实现代码是一样的,则可以在A中写好代码,BC只要调用父类A的方法既可,不用重新编写代码;而其他BC方法名相同、具体实现不相同的代码,则在A写成抽象的方法。

  2.一个子类如果implements一个接口,就必须实现接口中的所有方法(不管是否需要);如果是继承一个抽象类,只需要实现需要的方法即可,这是抽象类的一个优点

  3. 如果一个接口中定义的方法名改变了,那么所有实现此接口的子类显然将无法通过编译,因为它们所实现的方法名已经不存在了,这是接口的一个缺点;而抽象类就不存在这个问题,只是为子类添加了一个新的方法(接口中旧的方法)

  php接口开发 抽象类和接口的概念就是这些,php接口开发代码写好后是要经过检测的,检测成功后才能够进行深入的应用。买创意,买服务,上一品威客网,超600万威客人才随您挑,全方位、多领域的解决你的接口开发需求和难题,还不赶快注册一品威客网账号。

本文地址:
来源:一品威客,转载须经版权人书面授权并注明来源

留言(0

↓展开留言

该攻略尚无留言记录