PHP面向对象(5)

接口

接口使用interface关键字来定义,接口里面只能写没有具体逻辑的方法(这与抽象类不同,抽象类里还可以定义属性,接口是不可以定义属性的)。你可以把接口这样理解:接口表示某些类具有的共同行为,即某些类都能做什么;抽象类表示某些类都是什么类,都属于什么类。看下面的接口定义,例如:

复制代码
<?php
interface Icreature {
    public function grow();
}
class Animal implements Icreature{
    public function grow(){
        echo "动物的生长,需要吃东西".PHP_EOL;
    }
}
class Plant implements Icreature{
    public function grow(){
        echo "植物的生长,需要进行光合作用".PHP_EOL;
    }
}
$dog = new Animal();
$rose = new Plant();
$dog->grow();
$rose->grow();
?>

执行以上语句,输出如下:

复制代码
动物的生长,需要吃东西
植物的生长,需要进行光合作用

注:定义一个接口,使用interface关键字,后面写接口的名称,然后在大括号里写上可以执行的方法,这个方法没有具体的实现,例如上面定义了一个生物类接口Icreature;接口的名称,最好以大写的I开头,将来一看到以I开头的就表示接口,代码易于理解。接口的具体实现需要使用implements来实现,并要实现接口中的方法(写上具体的接口的方法逻辑),例如以上定义了动物类Animal 实现(implements)了 Icreature接口,并实现了动物类具体的生长方法grow,植物类Plant也一样,只不过,动物类的生长需要吃东西,而植物类的生长需要进行光合作用!

相关推荐
蒸鱼Yuzheng18 分钟前
Android Native 崩溃证据链:Tombstone、Build ID 与 Trace 如何联合归因
android·ndk·tombstone·调试符号·崩溃分析
修船大队长26 分钟前
CanNm 从休眠唤醒后重复消息报文的周期与数量分析
开发语言·php
事圆则缓27 分钟前
Kotlin 变量与函数:把页面状态和行为写成清楚的契约
android·开发语言·kotlin
hunterandroid35 分钟前
MVVM 迁移到 MVI:复杂页面状态如何收敛
android
李纲明43 分钟前
WordPress 安全加固基线:更新策略、文件权限、登录面收缩和备份验证(含回滚注意)
运维·安全·php·wordpress
希洛兔1 小时前
里氏替换原则详解:子类必须能透明替换基类(含继承风险演示 + 正确重构 + JDK 案例)
java·里氏替换原则
妖星1 小时前
Android 开机动画定制:从 bootanimation.zip 到源码编译
android
Novproxy_Z1 小时前
IPv4 与 IPv6 代理在跨境自动化场景下的选型与风险
运维·自动化·php
kevien_G11 小时前
微服务之OpenFeign最佳实践
java·微服务·架构
江湖有缘1 小时前
Docker实战 | 使用Docker部署ShipShipShip自托管产品更新与功能投票系统
java·linux·服务器·docker