php 类实现接口
PHP 类实现接口的基本方法
在 PHP 中,类可以通过 implements 关键字实现一个或多个接口。接口定义了类必须实现的方法,但不提供具体实现。
interface MyInterface {
public function method1();
public function method2();
}
class MyClass implements MyInterface {
public function method1() {
// 实现 method1
}
public function method2() {
// 实现 method2
}
}
实现多个接口
一个类可以同时实现多个接口,只需用逗号分隔接口名称。
interface InterfaceA {
public function methodA();
}
interface InterfaceB {
public function methodB();
}
class MyClass implements InterfaceA, InterfaceB {
public function methodA() {
// 实现 methodA
}
public function methodB() {
// 实现 methodB
}
}
接口继承
接口可以继承其他接口,使用 extends 关键字。实现类需要满足所有继承链中的方法。
interface ParentInterface {
public function parentMethod();
}
interface ChildInterface extends ParentInterface {
public function childMethod();
}
class MyClass implements ChildInterface {
public function parentMethod() {
// 实现 parentMethod
}
public function childMethod() {
// 实现 childMethod
}
}
接口中的常量
接口可以包含常量,实现类不能覆盖这些常量。
interface MyInterface {
const MY_CONST = 'value';
}
class MyClass implements MyInterface {
public function showConstant() {
echo self::MY_CONST;
}
}
$obj = new MyClass();
$obj->showConstant(); // 输出 "value"
类型提示与接口
接口可以用于类型提示,确保参数或返回值是实现特定接口的对象。
function process(MyInterface $obj) {
$obj->method1();
}
抽象类与接口结合
抽象类可以实现部分接口方法,非抽象子类需完成剩余方法的实现。
interface MyInterface {
public function method1();
public function method2();
}
abstract class MyAbstractClass implements MyInterface {
public function method1() {
// 实现 method1
}
// method2 留给子类实现
}
class MyConcreteClass extends MyAbstractClass {
public function method2() {
// 实现 method2
}
}
接口与多态
通过接口实现多态,不同类对同一接口方法可以有不同实现。
interface Logger {
public function log($message);
}
class FileLogger implements Logger {
public function log($message) {
// 记录到文件
}
}
class DatabaseLogger implements Logger {
public function log($message) {
// 记录到数据库
}
}
function logMessage(Logger $logger, $message) {
$logger->log($message);
}






