接口|学习笔记

简介: 快速学习接口,理解接口概念,掌握接口的价值和定义方式。

开发者学堂课程【PHP 进阶教程-由浅入深掌握面向对象开发-第二阶段:接口】学习笔记,与课程紧密联系,让用户快速学习知识。  

课程地址:https://developer.aliyun.com/learning/course/712/detail/12707


接口


目录

一、接口概念

二、示例

三、小结


一、接口概念

interface 注意类似接口不是类),专门用来规范一些共性类必须实现的方法。

1.接口不是类,但是与类有类似的结构。

2.接口不能够被实例化跟前面所讲的抽象类有点相似),但是类可以实现接口,注意这个词叫实现,不是继承。

简单语法

Interface 接口名字{接口内容}

class 类名 implements 接口名字{}

3.接口是用来规范项目体系,提供一些必须的行为规范,从上往下来规范行为。


二、示例

1、接口定义:使用 interface 关键字,后跟接口名字(与类结构一样)

interface Human{} //{} 中是接口成员中要定义的内容

#  接口 interface

#  定义接口

interface Human{}

得到一个接口 www.myweb.com/12interface.php

图片1.png

没有语法错误,说明这个结构它是可以接受的。

2、接口不是类,不可以被实例化

new Human();   # 致命错误,接口不能被实例化

图片2.png

cannot instantiate 不能被实例化

3、接口实现:接口是用来规范类必须完成的事情,所以接口只能被类实现: implements(关键字)

class Man implements Human{}

#实现接口

class Man implements Human{}

#实例化

$m = new Man();     //类可以被实例化,因为它是一个实体类不是一个抽象类


三、小结

1、接口是一个与类相似的结构,目的是为了规范一些类的必要的行为;

2、接口不是类,类只能实现接口

3、接口会使得项目的开发变得不那么灵活因为要做的东西太多了,所以选择性使用接口

(1)小型项目接口的增加会导致 PHP 的灵活性和快捷性受阻PHP 就是以灵活和敏捷开发著称),因此很少使用接口如果要做的很完善,要完全符合面向对象的思维体系去建立一个很大的架构,接口就会让我们的项目变得臃肿。

2)大型项目接口的增加会很好的规范团队的协作,比较多用接口从上往下,规范了下面必须要做的事情这样我们的项目的结构性就会很完整,所以这种时候使用比较多。

相关文章
|
消息中间件 应用服务中间件 网络安全
定时器方案:红黑树、最小堆和时间轮的原理
定时器方案:红黑树、最小堆和时间轮的原理
318 0
|
7月前
|
缓存 监控 负载均衡
如何提升 API 性能:来自 Java 和测试开发者的优化建议
本文探讨了如何优化API响应时间,提升用户体验。通过缓存(如Redis/Memcached)、减少数据负载(REST过滤字段或GraphQL精确请求)、负载均衡(Nginx/AWS等工具)、数据压缩(Gzip/Brotli)、限流节流、监控性能(Apipost/New Relic等工具)、升级基础设施、减少第三方依赖、优化数据库查询及采用异步处理等方式,可显著提高API速度。快速响应的API不仅让用户满意,还能增强应用整体性能。
|
机器学习/深度学习 算法 网络架构
【YOLOv8改进 - Backbone主干】EfficientRep:一种旨在提高硬件效率的RepVGG风格卷积神经网络架构
【YOLOv8改进 - Backbone主干】EfficientRep:一种旨在提高硬件效率的RepVGG风格卷积神经网络架构
|
6月前
|
SQL 人工智能 数据挖掘
quickbi使用总结以及问题反馈
本文总结了使用QuickBI高级版及电子表格的功能体验与改进建议。内容涵盖具体报表使用(如趋势分析表、多维趋势表)、函数及其他模块(如LOD函数、自助取数)、AI智能问数模块以及数据集使用的优缺点。指出趋势分析表在复合指标处理上的不足,多维趋势表对比周期限制,以及1万条明细数据限制对年同比的影响等问题。同时提出未来期望,希望建立结合企业知识库的大模型,优化数据分析与建议能力。
|
Kubernetes Java Docker
利用(K8S)配合Docker部署jar包
通过Docker打包并部署到Kubernetes(K8S)集群的过程。首先,通过SpringBoot生成jar包,接着在K8S环境中创建并编辑Dockerfile文件。随后构建Docker镜像,并将其推送到镜像仓库。最后,通过一系列kubectl命令(如get pods、get svc、logs等),展示了如何在K8S中管理应用,包括查看Pod状态、服务信息、Pod日志以及重启Pod等操作。
620 3
|
11月前
|
监控 安全 数据可视化
部署开源软件的最佳选择:Websoft9 vs 宝塔
在互联网技术快速发展的背景下,开源软件因灵活性和成本效益受到青睐。本文对比了两款服务器管理工具——宝塔面板和Websoft9。两者各具特色,用户可根据实际需求选择。
|
10月前
|
关系型数据库 MySQL Linux
MySQL数据库下载安装教程(Windows&Linux)
本文档详细介绍了MySQL的安装步骤,包括安装前的准备工作、下载安装包、Windows和Linux系统下的具体安装流程,以及如何配置MySQL服务、设置环境变量、启动服务和连接数据库等关键操作。
|
11月前
|
SQL 关系型数据库 MySQL
阿里面试:1000万级大表, 如何 加索引?
45岁老架构师尼恩在其读者交流群中分享了如何在生产环境中给大表加索引的方法。文章详细介绍了两种索引构建方式:在线模式(Online DDL)和离线模式(Offline DDL),并深入探讨了 MySQL 5.6.7 之前的“影子策略”和 pt-online-schema-change 方案,以及 MySQL 5.6.7 之后的内部 Online DDL 特性。通过这些方法,可以有效地减少 DDL 操作对业务的影响,确保数据的一致性和完整性。尼恩还提供了大量面试题和解决方案,帮助读者在面试中充分展示技术实力。
|
JSON SpringCloudAlibaba Java
Springcloud Alibaba + jdk17+nacos 项目实践
本文基于 `Springcloud Alibaba + JDK17 + Nacos2.x` 介绍了一个微服务项目的搭建过程,包括项目依赖、配置文件、开发实践中的新特性(如文本块、NPE增强、模式匹配)以及常见的问题和解决方案。通过本文,读者可以了解如何高效地搭建和开发微服务项目,并解决一些常见的开发难题。项目代码已上传至 Gitee,欢迎交流学习。
894 1
Springcloud Alibaba + jdk17+nacos 项目实践