php 继承与接口
封面图
•
2026-04-09
•
PHP
22
0
0
0
在 PHP 中,**继承(Inheritance)** 和 **接口(Interface)** 是面向对象编程(OOP)中非常重要的两个概念。它们都用于实现代码的重用和抽象化,但各自有不同的用途和特点。 --- ## 一、继承(Inheritance) ### 1. 定义 继承是面向对象编程中的一个核心特性,允许一个类(子类/派生类)从另一个类(父类/基类)中继承属性和方法。 ### 2. 语法 ```php class 子类 extends 父类 { // ... } ``` ### 3. 示例 ```php class Animal { public function speak() { echo "Animal speaks."; } } class Dog extends Animal { public function bark() { echo "Woof!"; } } $dog = new Dog(); $dog->speak(); // 继承自 Animal $dog->bark(); // Dog 自己的方法 ``` ### 4. 特点 - 一个类只能继承一个直接父类(PHP 支持单继承) - 可以使用 `parent::` 访问父类方法 - 使用 `final` 关键字可以防止类或方法被继承或覆盖 --- ## 二、接口(Interface) ### 1. 定义 接口是一种定义“行为”的方式,它只包含方法的声明,不包含具体实现。实现接口的类必须提供这些方法的具体实现。 ### 2. 语法 ```php interface 接口名 { public function 方法名(); } ``` ### 3. 示例 ```php interface Animal { public function speak(); } class Dog implements Animal { public function speak() { echo "Woof!"; } } $dog = new Dog(); $dog->speak(); // 输出: Woof! ``` ### 4. 特点 - 一个类可以实现多个接口 - 接口中不能有属性(PHP 8.1 之前) - 接口可以继承其他接口(PHP 支持接口继承) - 接口中的方法默认是 `public` 的 --- ## 三、继承 vs 接口:区别与联系 | 特性 | 继承(Inheritance) | 接口(Interface) | |--------------|----------------------------------|----------------------------------| | 是否支持多继承 | 不支持(单继承) | 支持(一个类可以实现多个接口) | | 是否有实现 | 有(可以有具体实现) | 没有(只有方法声明) | | 属性支持 | 支持 | 不支持(PHP 8.1 前) | | 构造函数 | 支持 | 不支持 | | 多态支持 | 支持 | 支持(通过接口类型变量) | --- ## 四、组合使用:继承 + 接口 你可以让一个类继承另一个类,同时实现一个或多个接口: ```php interface Animal { public function speak(); } class Mammal { public function breathe() { echo "Breathing..."; } } class Dog extends Mammal implements Animal { public function speak() { echo "Woof!"; } } ``` --- ## 五、使用场景建议 - **使用继承**:当你要扩展已有类的功能,或者建立“是一个”(is-a)关系时。 - **使用接口**:当你需要定义一组行为规范(如“可打印”、“可序列化”),或者希望实现多态时。 --- ## 六、PHP 8.1 新特性(接口中支持常量和属性) 从 PHP 8.1 开始,接口中可以定义常量和属性: ```php interface MyInterface { const VERSION = '1.0'; public $name; public function sayHello(); } ``` --- 如果你有更具体的场景或问题,欢迎继续提问!
上一篇:
php 使用魔术方法
下一篇:
php 经典设计模式
标题录入,一次不能超过6条
留言
评论