美文网首页
php中抽象类和接口的区别

php中抽象类和接口的区别

作者: daos | 来源:发表于2017-11-01 11:36 被阅读0次

先看官方文档中的定义:
抽象类:
PHP 5 支持抽象类和抽象方法。定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。
继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;另外,这些方法的访问控制必须和父类中一样(或者更为宽松)。例如某个抽象方法被声明为受保护的,那么子类中实现的方法就应该声明为受保护的或者公有的,而不能定义为私有的。此外方法的调用方式必须匹配,即类型和所需参数数量必须一致。例如,子类定义了一个可选参数,而父类抽象方法的声明里没有,则两者的声明并无冲突。 这也适用于 PHP 5.4 起的构造函数。在 PHP 5.4 之前的构造函数声明可以不一样的。
对象接口:
使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。
接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。
接口中定义的所有方法都必须是公有,这是接口的特性。
实现(implements
要实现一个接口,使用 implements 操作符。类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分隔多个接口的名称。
Note:
实现多个接口时,接口中的方法不能有重名。

Note:
接口也可以继承,通过使用 extends 操作符。

Note:
类要实现接口,必须使用和接口中所定义的方法完全一致的方式。否则会导致致命错误。

区别:
1.对接口的使用方式是通过关键字implements来实现的,而对于抽象类的操作是使用类继承的关键字extends实现的,使用时要注意。
2.接口没有数据成员,但是抽象类有数据成员,抽象类可以实现数据的封装。
3.接口没有构造函数,抽象类可以有构造函数。
4.的方法都是public类型,而抽象类中的方法可以使用private、protected或public来修饰。
5.一个类可以同时实现多个接口,但是只能实现一个抽象类。

相关文章

  • php中抽象类和接口的区别

    概念 面向对象的三大概念:封装,继承,多态 ;把属性和方法封装起来就是类。 一个类的属性和方法被另外...

  • php中抽象类和接口的区别

    先看官方文档中的定义:抽象类:PHP 5 支持抽象类和抽象方法。定义为抽象的类不能被实例化。任何一个类,如果它里面...

  • PHP中抽象类和接口的区别

    最近在读PHP文档,发现网上的说法和文档的说法不一致,手动实践后发现文档当然是正确的,所以结合文档,做下总结 抽象...

  • 5.5-全栈Java笔记:接口的定义和使用

    接口interface 接口的作用 为什么需要接口?接口和抽象类的区别? 接口就是比“抽象类”还“抽象”的“抽象类...

  • 第18条:接口优于抽象类

    java中可以用来定义允许多个实现的类型有两种:接口和抽象类。 接口和抽象类的区别: 1,抽象类中可以存在某些方法...

  • Java抽象类和接口类

    Java中接口和抽象类的区别是什么?什么时候用接口?什么时候用抽象类?抽象类和接口存在的意义是什么?能解决哪些编程...

  • 抽象类和接口区别

    一.抽象类和接口区别: 抽象类由abstract关键字来修饰,接口由interface关键字来修饰。 抽象类中除了...

  • 接口测试哪几个点是需要特别关注的?

    接口和抽象类的区别: 1、都不能被实例化。 2、接口的实现类和抽象类的子类只有全部实现了接口或者抽象类中的方法后才...

  • 经典面试题(java 整理(一))

    1.接口和抽象类的区别 ①抽象类里可以有构造方法,而接口内不能有构造方法。 ②抽象类中可以有普通成员变量,而接口中...

  • 新手做接口测试哪几个点是需要特别关注的?

    接口和抽象类的区别:1、都不能被实例化。 2、接口的实现类和抽象类的子类只有全部实现了接口或者抽象类中的方法后才可...

网友评论

      本文标题:php中抽象类和接口的区别

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