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万威客人才随您挑,全方位、多领域的解决你的接口开发需求和难题,还不赶快注册一品威客网账号。