抽象类和接口的区别

相同点:

  • 抽象类和接口都不能被实例化

  • 抽象类和接口的抽象方法在被子类继承/实现的时候,对应的方法一定要实现,否则就会报错

  • 抽象类和接口的抽象方法如果有参数,参数有默认值,那么子类继承/实现该方法的时候参数和默认值也都要有


不同点:

  • 抽象类的抽象方法前面必须用 abstract 不用就默认为普通方法,抽象类里面可以有普通方法,又有抽象方法,而接口中的抽象方法可以省略,因为接口中只有抽象方法

  • 抽象类的抽象方法只能用 public 和 protected,因为 prevate 会导致该方法不能被继承,接口中的方法只能用 public

  • 接口的关键词是:interface(接口),implement(实现)const(常量),抽象类的关键词是:abstract(抽象的)

  • 一个类可以实现多个接口,中间用逗号,却不能同时继承多个抽象类方法(也就是父类),一个类可以先继承父类,然后再实现接口

  • 接口中只能规定方法,不能写属性,只能声明常量,抽象类可以写属性

特别感谢

参考博客地址:PHP中的 抽象类(abstract class)和 接口(interface)

本作品采用《CC 协议》,转载必须注明作者和本文链接
EMin
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!