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也一样,只不过,动物类的生长需要吃东西,而植物类的生长需要进行光合作用!

相关推荐
叠叠乐3 小时前
robot_state_publisher 参数
java·前端·算法
过期动态3 小时前
JDBC高级篇:优化、封装与事务全流程指南
android·java·开发语言·数据库·python·mysql
WizLC3 小时前
【Java】各种IO流知识详解
java·开发语言·后端·spring·intellij idea
Mr.朱鹏3 小时前
SQL深度分页问题案例实战
java·数据库·spring boot·sql·spring·spring cloud·kafka
小张快跑。3 小时前
【Java企业级开发】(十一)企业级Web应用程序Servlet框架的使用(上)
java·前端·servlet
星星不打輰3 小时前
SSM项目--SweetHouse 甜蜜蛋糕屋
java·spring·mybatis·ssm·springmvc
Knight_AL3 小时前
Java 线程池预热(Warm-up)实战:开启与不开启到底差多少?
java·开发语言
爬山算法3 小时前
Netty(15)Netty的线程模型是什么?它有哪些线程池类型?
java·后端
C++业余爱好者3 小时前
公司局域网访问外网的原理
java
@淡 定4 小时前
异常处理最佳实践
java