没学过PHP我就把握关于面向对象的理解给你说说吧:
接口是定义了一个对象可以接受的消息,也就是定义了可以对一个对象进行的操作,外界通过这个接口获取对象的服务。一个对象 == 接 口 + 实现。 在这里接口就相当于界面的角色,外界可以依赖这个界面。 封装就是确定一个对象的接口和实现,将接口呈现出来,隐藏实现的过程。
抽象类是一种特殊的类,它的成员函数(或者方法)可不提供定义而且不能定义它的对像。通常抽象类里都定义了一组接口,这组接口没有提供实现,而由抽象类派生的非抽象子类则提供了这个接口的实现。 从上面可以看出抽象类相当于一个接口,因为它提供了一组接口,而非抽象派生类相当于实现,这里就产生了一种较高层次的封装。 抽象类提供了一个接口,而这个抽象类的不同派生类提供了不同的实现,从而是实现和接口分离,实现了更高层次的封装。
一些好的面向对象程序的代码都尽可能使用抽象类,就是居于上面的原因。
抽象类:
就是用来继承的,本身无法实例化,是用来定规范的,子类必须把父类的抽象方法全部实现
接口:
可以理解为更严格的抽象类
一是像抽象类一样,可以定规范,因为接口有个特点,实现接口就必须把里面的方法全部实现,这样项目经理就可以在接口里面定一个规范,要实现哪些函数
二是php是单继承,一个类只能有一个父类,为了解决这个问题就出现了接口,一个类可以实现多个接口
这个得从软件的要求来解释,软件一般要求具有 健壮性/扩展性/维护性.
接口和抽象类就能实现.
他们主要讲究一方便