美文网首页我爱编程
PHP 抽象类与接口

PHP 抽象类与接口

作者: Leon木木森 | 来源:发表于2018-04-11 10:45 被阅读0次

    当类中有一个方法,他没有方法体,也就是没有花括号,直接分号结束,像这种方法我们叫抽象方法,必须使用关键字abstract定义。
    如:public abstract function fun();

    包含这种方法的类必须是抽象类也要使用关键字abstract加以声明。(即使用关键字abstract 修饰的类为抽象类)

    抽象类的特点:
    不能实例化,也就是不能new成对象
    若想使用抽象类,就必须定义一个类去继承这个抽象类,并定义覆盖父类的抽象方法(实现抽象方法)

    接口
    PHP与大多数面向对象编程语言一样,不支持多重继承,也就是说每个类智能继承一个父类。为了解决这个问题,PHP引入了接口,接口的思想是指定一个实现了该接口的类必须实现的一系列函数。
    定义格式:interface 接口名称{
    //常量成员 (使用const 关键字定义)
    //抽象方法 (不需要使用abstract关键字)
    }
    使用格式:class 类名 implements 接口名1,接口名2{... ...}

    当你关注一个食物的本质的时候,用抽象类;当你关注一个操作的时候,用接口
    接口是对动作的抽象,表示这个对象能做什么,对垒的局部行为进行抽象。
    抽象类是对根源的抽象,表示这个类是什么,对象的整体进行操作,对一类食物的抽象描述。
    比如:男人、女人,这两类(如果是类的话),他们的抽象类是人。说明,他们都是人,人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类实现它。
    所以,在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口、走路接口)。
    区别:
    接口是抽象类的比变体,接口中所有的方法都是抽象的。而抽象类是声明方法的存在而不去实现它的类。
    接口可以多继承,抽象类不行
    接口定义方法,不能实现,而抽象类可以实现部分方法。
    接口中基本数据类型为static而抽象类不是的。
    接口中不能含有静态代码块以及静态方法,而抽象类可以含有静态方法和静态代码块。

    对象的多态性:是指在父类中定义的属性或行为被子类继承之后,可以具有不同数据类型或表现出不同的行为。这使得同一个属性或行为在父类及其格各个子类中具有不同的语义。

    相关文章

      网友评论

        本文标题:PHP 抽象类与接口

        本文链接:https://www.haomeiwen.com/subject/gepohftx.html