php专区

 首页 > php专区 > PHP高级 > 面向对象MVC > PHP抽象类、接口与其应用例子

PHP抽象类、接口与其应用例子

分享到:
【字体:
导读:
          抽象类: 就是用来继承的,本身无法实例化,是用来定规范的,子类必须把父类的抽象方法全部实现. 接口: 可以理解为更严格的抽象类 一是像抽象类一样,可以定规范,因为接口有个特点,实现...

抽象类:就是用来继承的,本身无法实例化,是用来定规范的,子类必须把父类的抽象方法全部实现.

接口:可以理解为更严格的抽象类

一是像抽象类一样,可以定规范,因为接口有个特点,实现接口就必须把里面的方法全部实现,这样项目经理就可以在接口里面定一个规范,要实现哪些函数.

二是php是单继承,一个类只能有一个父类,为了解决这个问题就出现了接口,一个类可以实现多个接口.

例如,考虑一个名为Media的类,它用来描述各种公开资料的共同性质,因为Media不表示真实的实体,而是一些相似的泛化表示,所以你不会希望直接对其进行实例化,为确保这种情况不会发生,可以声明这个类是抽象的,然后再由各种派生的Media类继承此抽象类,这保证了子类直接的一致性,因为在抽象类中定义的所有方法都必须在子类中实现.

声明为抽象的类必须在定义前面加上关键字abstract,如下:

  1. abstract class Class_Name 
  2.  //insert attribute definitions here 
  3.  //insert mothod definitions here//phpfensi.com
  4. }

抽象类可以确保一致性,因为任何派生类都必须实现该抽象类继承的所有抽象方法,如果没有实现抽象类中定义的任何抽象方法,将导致一个致命错误.

用抽象类还是接口

什么时候应当使用接口,什么时候该使用抽象类?这让人很困惑,也带来了很多争论,不过,以下因素可以帮助你做出决定.

•如果要创建一个模型,这个模型将由一些紧密相关的对象采用,就可以使用抽象类,如果要创建将由一些不相关对象采用的功能,就使用接口.

•如果必须从多个来源继承行为,就使用接口,PHP类可以继承多个接口,但不能扩展多个抽象类.

•如果知道所有类都会共享一个公共的行为实现,就使用抽象类,并在其中实现该行为,在接口中无法实现行为.

 
分享到:
PHP学习笔记之面向对象设计 - php面向对...
PHP学习笔记之面向对象设计 面向对象设计是php程序开发中一个很重要的内容块,如果你想成为高级php程序员我们必须知道面向对象设计具体用法与写法. 维护简单  模块化是面向对象编程中的一个特征.实体被表示为类和同一名字空间中具有相同功能的类,我们可以在名字空间中添加一个类而不会影响该...
php __FILE__,__CLASS__魔术变量使用方法
今天看到一个魔术变量,是以前没见过的,__DIR__,我查了查,发现原来是php5.3新增的,顺便举几个例子,解释一下php的魔术变量. 系统常量: __FILE__ 当前文件名 __LINE__ 当前行数 __FUNCTION__ 当前函数名 __CLASS__ 当前类名 __METHOD__ 当前对象的方法名 详细分析: 1,__FILE__:文件的完整路...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……