抽象类
<?phpabstract class Shengwu{abstract public function jump();}//定义抽象类abstract class Person extends Shengwu{public $name;public function say(){echo '说出自己的名字';}abstract public function eat($name);}class Man extends Person{//继承了Person之后,这里面就有Person的对象和方法public function eat($name){echo '今天早上我吃的面包,大家吃的什么';}public function jump(){echo '我能立定跳远2m';}}//1、抽象类不能实例化对象//$p=new Person();//报错Cannot instantiate abstract class Person//2、抽象类存在的目的是为了让子类继承(不是为了用来实例化对象的)//3、抽象类里面一般都要有抽象方法,抽象方法是用来让子类实现的,而且子类必须实现,不实现就报错//4、抽象方法只能是public或者protected//5、抽象方法如果有参数,参数有默认值,那么实现该方法的时候参数和默认值也都要有//6、抽象类可以继承抽象类,子类在实现的时候所有的抽象方法都得实现必有
抽象类用在哪呢?
可以用在数据库里面,数据库有多种,这些数据库在连接数据库的时候,都是不一样的,但是在查询语句的时候,我们的select、update等都是一样的,所以我们可以将他们公共的东西放到一块,写到一个父类,这个父类定义成抽象类,把这个抽象的父类写好之后,它不能实例化对象,因为仅仅存在一个抽象的父类是完成不了数据库的整个操作的,不同的东西各个子类自己实现。
接口(抽象的抽象类)

<?php/*abstract class Test{abstract function test1();abstract function test2();}//子类只要继承了Test类,test1和test2都要实现*/interface Test{function demo();}interface Eat extends Test{function eatMianbao();//接口中只有函数的声明,没有函数的实现}interface Jump{function jump();}class Animal{}//先继承父类,再实现接口class Person extends Animal implements Eat,Jump//先继承Animal再实现接口{//写一个类让他实现这个接口function eatMianbao(){echo '我在吃面包';}//接口可以继承接口,但是里面的方法都要实现function demo(){}function jump{echo '我会跳';}}/*1、接口中的方法都是抽象方法,所以abstract可以省略不写2、接口中的方法必须是public3、接口中只能规定方法,不能写属性,(接口中可以写常量)4、一个类可以实现多个接口,中间用逗号隔开5、一个类可以先继承父类,然后再实现接口6、接口可以继承接口,但是里面的方法都要实现*/
接口就是对外交互的窗口(联想USB接口)
开发的时候是面向接口开发
