PHP接口学习
接口:不同类的共同行为进行定义,然后在不同类中实现不同的功能。
接口的具体语法:
接口是零件可以用多个零件组成一个新东西;
接口本身是抽象的,内部申明的方法也是抽象的; 不用加abstract
一个类可以一次性实现多个接口。语法用implements实现,然后在把接口的功能实现;
接口也可以基继承,用extends;
接口是一堆方法的说明,不能加属性(成员变量);
接口就是供组装成类用的,方法只能用public;
接口作为一种严格规范 降低开发者与调用者的沟通
1、接口实现
举例 人类、动物实现某个动作
定义接口
- interface Action(){
- //接口定义‘public’访问属性方法,无需实现方法
- public function eat( $foods );
- }
Human ( Animl ) 类实现接口
- class Human implements Action(){
- //实现接口,必须提供接口中定义的方法
- public function eat( $foods){
- echo "Human eat {$foods}";
- }
- }
- #Animal类
- class Animal implements Action(){
- public function eat( $foods){
- echo "Animal eat {$foods}";
- }
- }
Human( Animal )实现eat的动作:
- $human = new Human();
- $human->eat();
- $animal = new Animal();
- $animal->eat();
instanceof 判断某个对象是否实现了某个接口
- function CheckEat( $obj ){
- if( $obj instanceof Action ){
- $obj->eat( 'orange' );
- }else{
- echo "the object not implements Action";
- }
- }
- CheckEat( $human );
- CheckEat( $animal );
2、接口继承
- //extends 让接口继承接口
- interface IcanPee extends Action(){
- public function pee();
- }
- //当类实现子接口时,父接口定义的方法也需要在这个类里面具体实现
- Class Human1 implements IcanPee(){
- public function pee(){ }
- public function eat( $foods ){ }
- }
某个类实现(implements)了某个接口和继承(extends)了某个类的区别?
实现接口和继承很类似,但接口不能直接创建自己的对象
继承的父类必须有该方法的具体实现,子类可以重写父类的方法,也可以不写
接口里面的方法是不需要具体实现的,只要定义了方法的名称和参数即可,具体的实现必须在实现类中定义
一句话概括: 类的方法必须有实现,接口的方法必须为空。
PHP接口学习的更多相关文章
- C# 常用接口学习 ICollection<T>
C# 常用接口学习 ICollection<T> 作者:乌龙哈里 时间:2015-11-01 平台:Window7 64bit,Visual Studio Community 2015 参 ...
- C# 常用接口学习 IComparable 和 IComparer
C# 常用接口学习 IComparable 和 IComparer 作者:乌龙哈里 时间:2015-11-01 平台:Window7 64bit,Visual Studio Community 201 ...
- 工程化编程实战callback接口学习笔记
一.编译并运行 help.version命令执行正常,但quit命令出错 二.Debug 从命令输入到执行过程: 源代码: 更改后: 运行结果:能正确运行quit命令 Callback接口学习成果: ...
- caffe的python接口学习(1):生成配置文件
caffe是C++语言写的,可能很多人不太熟悉,因此想用更简单的脚本语言来实现.caffe提供matlab接口和python接口,这两种语言就非常简单,而且非常容易进行可视化,使得学习更加快速,理解更 ...
- PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [3] 首页 APP 接口开发方案 ② 读取缓存方式
以静态缓存为例. 修改 file.php line:11 去掉 path 参数(方便),加上缓存时间参数: public function cacheData($k,$v = '',$cacheTim ...
- OpenCV(C++接口)学习笔记1-图像读取、显示、保存
OpenCV在2.0加入版本号之后C++接口函数,学习前C语言的接口功能.现在OpenCV它已被发展到2.4.9版本号,所以,我决定学习C++接口函数,与步伐. 1.创建图像 cv::Mat imag ...
- C# 常用接口学习 IEnumerable<T>
作者:乌龙哈里 时间:2015-10-24 平台:Window7 64bit,Visual Studio Community 2015 本文参考: MSDN IEnumerable<T> ...
- java Thread 接口学习
对于程序员来说 Thread应该都不会陌生,具体的接口调用不是本篇的重点.Thread的基本概念及接口的使用:java多线程 下面将更多的从底层实现角度讲一下Thread. Thread的声明如下: ...
- JDBC 接口学习
说明:文章所有内容皆选自实验楼教程[JDBC 入门教程],想要学习更多JDBC,可以点击教程进行学习~ JDBC 简介 JDBC 的全称是 Java Database Connectivity,叫做 ...
- JMeter接口学习笔记2017
协议学习地址:http://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672.html 本篇学习笔记来自于慕课网上学习JMeter的学习笔记 学习 ...
随机推荐
- require.js学习笔记
使用require.js的好处? 1 有效的防止命名冲突(可以将变量封装在模块内,通过暴露出的接口解决命名冲突) 2 解决不同JS文件中的依赖 3 可以让我们的代码以模块化的方式组织 官方网站http ...
- PAT 1057
Stack is one of the most fundamental data structures, which is based on the principle of Last In Fir ...
- Unity -JsonUtility的使用
今天,为大家分享一下unity上的Json序列化,应该一说到这个词语,我们肯定会觉得,这应该是很常用的一个功能点:诚然,我们保存数据的时候,也许会用到json序列化,所以,我们有必要快速了解一下它的简 ...
- 详谈 Unity3D AssetBundle 资源加载,结合实际项目开发实例
第一次搞资源更新方面,这里只说更新,加载,AssetBundle资源加载,谈谈自己的理解,以及自己在项目中遇到的那些神坑,现在回想一下,真的是自己跪着过来的,说多了,都是泪. 我这边是安卓AssetB ...
- Fibonacci 数列O(logn)解法
传统解法 提到斐波那契数列(Fibonacci Sequence),首先想到的是经典的动规(DP)算法. 时间复杂度O(n),这里空间复杂度可以优化到O(1).代码如下: int fib_n(int ...
- javaweb项目-医者天下 (Spring+SpringMVC+MyBatis)
项目下载地址:http://download.csdn.net/detail/qq_33599520/9826683 项目完整结构图: 项目简介: 医者天下项目是一个基于Spring+SpringMV ...
- vue 调用高德地图
一. vue-amap,一个基于 Vue 2.x 和高德地图的地图组件 https://elemefe.github.io/vue-amap/#/ 这个就不细说了,按照其文档,就能够安装下来. 二. ...
- 蓝桥杯-大衍数列-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- cmd第一次推送github
echo off for %%i in ("%cd%") do set "name=%%~ni" git init git remote add origin ...
- Docker - 导出导入容器
导出和导入容器 使用docker export命令可以将本地容器导出为容器快照文件. 使用docker import命令可以将容器快照文件导入到本地镜像库,也可以通过指定URL或者某个目录来导入. 特 ...