* 接口
* 1.使用关键字:interface
* 2.类是对象的模板,接口是类的模板
* 3.接口看作是一个特殊的类
* 4.接口中的方法,只声明不实现,与抽象类一样
* 5.接口中的方法必须是public,支持static
* 6.接口中可以声明类常量const,但不允许被类或子接口覆盖
* 7.用类实现一个接口使用implements 关键字
* 8.一个类可以实现多个接口,多个接口之间用逗号分开
* 9.接口之间也可以使用关键字extends继承
* 10.一个类实多个接口时,方法不可以重名 //声明接口:动物
if (!interface_exists('Animal')) {
interface Animal
{
//接口常量
const status = 'viable'; //能存活的
//接口方法:饲养时吃什么
public function feeding($foods);
}
}
//声明类Cat,并实现接口Animal
if (interface_exists('Animal')) {
class Cat implements Animal
{
private $name = '猫';
//在类中必须实现接口中的方法feeding()
public function feeding($foods)
{
return $this->name.'吃'.$foods;
}
}
}
//实例化Cat类,
echo (new Cat())->feeding('老鼠');
echo '<hr>';
//再定义一个接口:动物的特性
if (!interface_exists('Feature')) {
interface Feature
{
//接口方法
public function hobby($hobby);
}
}

//声明一个类Dog,实现了二个接口: Animal,Feature
if (interface_exists('Animal') && interface_exists('Feature')) {
class Dog implements Animal, Feature
{
private $name = '狗';
//必须实现接口Animal中的feeding()方法
public function feeding($foods)
{
// return $this->name.'吃'.$foods;
//改成链式
echo $this->name.'吃'.$foods;
return $this;
}
//必须实现接口Feature中的hobby()方法
public function hobby($hobby)
{
// return $hobby;
//改成链式
echo $hobby;
return $this;
}
}
}
//实例化Dog类
echo (new Dog())->feeding('肉');

echo (new Dog())->hobby('忠诚,勇敢,不离不弃~~');
//大家想想如何将上面的二个方法调用改成链式?
//注意:先把上面的实例化调用语句注释掉,否则下面的链式调用不生效
(new Dog)->feeding('骨头')->hobby(',可爱,温顺,听话~~');

php中的接口interface的更多相关文章

  1. java中的接口interface

    关于接口 接口描述了实现了它的类拥有什么功能.因为Java是强类型的,所以有些操作必须用接口去约束和标记.接口作为类的能力的证明,它表明了实现了接口的类能做什么. 类似与class,interface ...

  2. 介绍Unreal Engine 4中的接口(Interface)使用C++和蓝图

    这个教程是从UE4 Wiki上整理而来. 在C++中直接使用Interface大家应该很熟悉.只是简单先定义一个个有虚函数的基类,然后在子类中实现相应的虚函数.像这样的虚函数的基类一般概念上叫接口.那 ...

  3. go语言中的接口interface

    package main; import "fmt" //接口interface //接口是一个或多个方法签名的集合 //只要某个类型拥有该接口的所有方法签名,即算实现该接口. / ...

  4. Ts中的接口interface(属性也能继承...)

    接口ITest.ts interface ITest { name:string; age:number; run(); to(x:number,y:number):number; } 必须继承接口的 ...

  5. Objective-C 中的协议(@protocol)和接口(@interface)的区别

    Objective-C 中的协议(@protocol),依照我的理解,就是C#, Java, Pascal等语言中的接口(Interface).协议本身不实现任何方法,只是声明方法,使用协议的类必须实 ...

  6. c#中抽象类(abstract)和接口(interface)的相同点与区别

    相同点: 1.都可以被继承 2.都不能被实例化 3.都可以包含方法声明 4.派生类必须实现未实现的方法 区别: 1.抽象基类可以定义字段.属性.方法实现.接口只能定义属性.索引器.事件.和方法声明,不 ...

  7. php中的抽象类(abstract class)和接口(interface)

    一. 抽象类abstract class 1 .抽象类是指在 class 前加了 abstract 关键字且存在抽象方法(在类方法 function 关键字前加了 abstract 关键字)的类. 2 ...

  8. 面向对象编程语言中的接口(Interface)

    在大多面向对象的编程语言中都提供了Interface(接口)的概念.如果你事先学过这个概念,那么在谈到“接口测试”时,会不会想起这个概念来!?本篇文章简单介绍一下面向对象编程语言中的Interface ...

  9. JAVA 中的接口(interface)

    我们一般将一个抽象类中所有方法都是抽象方法的抽线类定义为接口,接口时由常量和抽象方法组成的特殊类,即接口里面连构造方法也没有.接口通常用“interface”关键字来声明,一个类通过继承接口的方式,从 ...

随机推荐

  1. P4147 玉蟾宫

    P4147 玉蟾宫 给定一个 \(N * M\) 的矩阵 求最大的全为 \(F\) 的子矩阵 Solution 悬线法 限制条件为转移来的和现在的都为 \(F\) Code #include<i ...

  2. kafka集群监控之kafka-manager部署(kafka-manager的进程为:ProdServerStart)

    kafka集群监控之kafka-manager部署(ProdServerStart) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 雅虎官网GitHub项目:https://git ...

  3. JVM总结(二):JVM的内存分配策略

    这节我们总结一下JVM中的内存分配策略.目录如下: 内存分配策略 对象优先在新生代Eden分配 大对象直接进入老年代 长期存活的对象将进入老年代 动态对象年龄判定 空间分配担保 内存分配策略 Java ...

  4. Dapper总结(二)---事务和存储过程

    一  dapper使用事务 string sql1 = "insert into UserInfo values('user8',27,'s')"; string sql2 = & ...

  5. css postion 属性区别【原】

    CSS样式中的postion元素有四个属性,即static | absolute | fixed | relative. static: 默认值.无特殊定位,遵循HTML基本定位规则 . fixed: ...

  6. python 小爬虫爬取博客文章初体验

    最近学习 python 走火入魔,趁着热情继续初级体验一下下爬虫,以前用 java也写过,这里还是最初级的爬取html,都没有用html解析器,正则等...而且一直在循环效率肯定### 很低下 imp ...

  7. mysql alter 用法,修改表,字段等信息

    一: 修改表信息 1.修改表名 alter table test_a rename to sys_app; 2.修改表注释 alter table sys_application comment '系 ...

  8. JavaScript之不规则Table转化为可定点索引td节点的网格矩阵【插件】

    由于解析课程表的缘故,有如下需求: 1. 将任意表格解析成独立的单元格矩阵[本次博文的缘由] 2. 根据矩阵坐标,确定任意一格的节点   /* 表格-->网格化 标记表格的位置及其对应的节点 * ...

  9. Sql server 查询某个时间段,分布有几周,几月和几日

    1. 查询:以“周”为单位 --查询以下时间段内分别有几周 --时间段:“2017-09-01”到“2017-10-1” select number as wknum from master..spt ...

  10. Python 入门基础16 -- ATM + 购物车

    ATM + 购物车 1.需求分析 2.设计程序以及程序的架构 设计程序的好处: - 扩展性强 - 逻辑清晰 3.分任务开发 4.测试 黑盒: 白盒: 对程序性能的测试 5.上线运行 # Tank -- ...