php中的抽象类和接口

来源:互联网 发布:华中科技网络教育 编辑:程序博客网 时间:2024/05/21 12:42

      抽象类和接口相似,都是一种比较特殊的类。接口是一种特殊的抽象类。他们的声明都比较容易,但是作用理解上比较困难,下面就具体分析一下:

      首先,我们先来看看抽象类,抽象类的关键字是abstract,任何一个类都包括成员属性和成员方法。那抽象类的成员属性和成员方法都有什么要求呢?

      成员属性:抽象类中可以有不是抽象的成员属性,但访问权限不能是private关键字修饰为私有的。

      成员方法:抽象类中可以有不是抽象的成员方法,但抽象方法没有方法体。

      所以可以看出来抽象类是个“半成品”的类,抽象类中有没有实现的抽象方法,所以抽象类是不能被实例化的,即创建不了对象。那抽象类有什么作用呢?使用抽象类就包含了继承关系,它是为子类定义公共接口,将它的操作交给子类去实现,定义了抽象类就相当于定义了一种规范,这种规范要求子类去遵守。当子类继承抽象类后,就必须把抽象方法按照自己的需要去实现,否则子类中还有抽象方法,也不能实例化。

      其次让我们来看看接口吧,如果抽象类中的所有方法都是抽象方法,那么我们就可以用到接口了。接口是一种更严格的规范,同抽象类一样不能实例化,也需要通过子类来实现。php是单继承的,一个php类只能由一个父类但是可以有多个接口。

    class 类名 implements 接口1,接口2,......,接口N{

             //实现所有接口中的抽象方法 

    }