资讯专栏INFORMATION COLUMN

PHP的抽象类、接口的区别和选择

keithxiaoy / 1050人阅读

摘要:对抽象类的使用是通过关键字。抽象类中可以声明各种类型成员变量,实现数据的封装。接口中的方法默认都是类型的,而抽象类中的方法可以使用来修饰。抽象类还是接口如果要创建一个模型,这个模型将由一些紧密相关的对象采用,就可以使用抽象类。

区别:

1、对接口的使用是通过关键字implements。对抽象类的使用是通过关键字extends。当然接口也可以通过关键字extends继承。
2、接口中不可以声明成员变量(包括类静态变量),但是可以声明类常量。抽象类中可以声明各种类型成员变量,实现数据的封装。(另JAVA接口中的成员变量都要声明为public static final类型)
3、接口没有构造函数,抽象类可以有构造函数。
4、接口中的方法默认都是public类型的,而抽象类中的方法可以使用private,protected,public来修饰。
5、一个类可以同时实现多个接口,但一个类只能继承于一个抽象类。

抽象类还是接口

如果要创建一个模型,这个模型将由一些紧密相关的对象采用,就可以使用抽象类。如果要创建将由一些不相关对象采用的功能,就使用接口。如果必须从多个来源继承行为,就使用接口。如果知道所有类都会共享一个公共的行为实现,就使用抽象类,并在其中实现该行为。

";
    }
    abstract function meth2();
    public $var1="var1";
    public static $var2="var2";
    const Var3="Var3";
}
class Son extends Father {
    function meth2() {
        echo "meth2 of Son...
"; } } $s=new Son(); echo $s->var1."
"; echo Father::$var2."
"; echo Father::Var3."
"; Interface IFather { //public $iVar1="iVar1"; 此处接口定义中不能包含成员变量 //public static $iVar2="iVar2"; 此处接口定义中不能包含静态变量 const iVar3="iVar3"; function iMeth1(); } Class ISon implements IFather { function iMeth1() { echo "iMeth1...
"; } } $is=new ISon(); echo IFather::iVar3; ?>

zzy

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29475.html

相关文章

  • PHP 抽象(abstract class) 接口(interface)

    摘要:中的抽象类和接口有什么区别呢我们来看下具体的说明。而抽象类中抽象方法前则必须加上表示显示声明为抽象方法。抽象类不能被直接实例化。详情请看原文中的抽象类和接口注本文为转载,原文地址中的抽象类和接口 PHP中的 抽象类(abstract class)和 接口(interface)有什么区别呢?我们来看下具体的说明。 一、 抽象类和接口的异同 1.相同点: (1)两者都是抽象类,都不能实例化...

    awokezhou 评论0 收藏0
  • PHP设计模式(二):抽象接口

    摘要:在设计模式中,抽象类不能够被实例化初始化,但是可以依靠具体类的继承来实现。对于大型项目来说,对象都是由基本的抽象类继承实现,而这些类的方法通常都由接口来定义。 原文地址:PHP设计模式(二):抽象类和接口 Introduction 对于编程来说,对事物的抽象是一个老生常谈的话题,抽象问题更利于面向对象编程以及程序设计模式。和C/C++,Java,Python等语言一样,PHP也支持面向...

    xialong 评论0 收藏0
  • PHP面试之面向对象(1)

    摘要:二面向对象有什么特征面向对象的主要特征有抽象继承封装和多态。析构函数析构函数是在引入的,它的作用与调用时机和构造函数刚好相反,它在对象被销毁时自动执行。 PHP面试专栏正式起更,每周一、三、五更新,提供最好最优质的PHP面试内容。PHP中面向对象常考的知识点有以下7点,我将会从以下几点进行详细介绍说明,帮助你更好的应对PHP面试常考的面向对象相关的知识点和考题。整个面向对象文章的结构涉...

    phodal 评论0 收藏0
  • PHP面试常考内容之面向对象(2)

    摘要:继上一篇面试常考内容之面向对象发表后,今天更新,需要的可以直接点击文字进行跳转获取。析构函数,当对象被销毁时调用。 PHP面试专栏正式起更,每周一、三、五更新,提供最好最优质的PHP面试内容。继上一篇PHP面试常考内容之面向对象(1)发表后,今天更新(2),需要(1)的可以直接点击文字进行跳转获取。整个面向对象文章的结构涉及的内容模块有: 一、面向对象与面向过程有什么区别?二、面向对...

    Barry_Ng 评论0 收藏0
  • PHP面试常考内容之面向对象(3)

    摘要:面试专栏正式起更,每周一三五更新,提供最好最优质的面试内容。继上一篇面试常考内容之面向对象发表后,今天更新面向对象的最后一篇。面向对象的主要特征为封装继承多态。为了提高内聚性减少引起变化,单一原则是低耦合高内聚的面向原则上的引申。 PHP面试专栏正式起更,每周一、三、五更新,提供最好最优质的PHP面试内容。继上一篇PHP面试常考内容之面向对象(2)发表后,今天更新面向对象的最后一篇(3...

    xfee 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<