PHP面试题更新 2026-08-03

在 PHP 语言中,接口与抽象类之间的区别具体体现在哪些方面?

考察说明

考查对 PHP 面向对象中接口与抽象类核心区别的理解。

回答思路

  1. 【回答框架 1】接口使用 interface 关键字定义,抽象类使用 abstract class 定义。接口只能声明方法签名,不能包含方法实现;抽象类可以包含抽象方法和具体方法。
  2. 【回答框架 2】一个类可以实现多个接口,通过 implements 关键字;但只能继承一个抽象类,通过 extends 关键字。因此接口用于定义能力契约,抽象类用于定义基类模板。
  3. 【回答框架 3】接口中的方法默认是 public 且必须是 public;抽象类中的抽象方法可以是 public 或 protected。接口不能定义属性,但可以定义常量;抽象类可以定义属性。
  4. 【回答框架 4】接口强调能力的组合与多继承,抽象类强调代码复用与层级关系。若多个类有共同的行为但无共同祖先,用接口;若有共同基础实现,用抽象类。
  5. 【回答框架 5】在 PHP 8 中,接口可以定义构造函数和静态方法,但抽象类更灵活,支持属性、构造逻辑等。选择时需根据设计意图。
  6. 【关键点 1】接口用 interface 定义,抽象类用 abstract class 定义。
  7. 【关键点 2】接口只能有方法签名,抽象类可包含实现。
  8. 【关键点 3】一个类可实现多个接口,但只能继承一个抽象类。
  9. 【关键点 4】接口方法必须 public,抽象类方法可 protected。
  10. 【关键点 5】接口定义契约,抽象类提供模板复用。
  11. 【易错点 1】混淆接口与抽象类的用途,导致设计不合理。
  12. 【易错点 2】忽略接口方法默认 public 的限制。
  13. 【易错点 3】误以为抽象类可以多继承。