接口可以认为是规范类的模板,具体怎么运行操作还是需要看继承的子类怎么写,具体需要注意的的地方与写法如下所示:

  • interface 接口中的方法必须为 public 公开的:
<?php
interface A{public function info();
}

其中 public 可以省略,简写为如下方式:

<?php
interface A{function info();
}

若定义方法类型会报致命错误:Access type for interface method A::info() must be omitted in /wwwroot/api.php on line 3 例如:

<?php
interface A{private function info();
}
  • interface 接口它不需要实例化,但是需要 implements 去继承它,并且接口中定义的变量必须传递,继承写法如下:
<?php
interface A{private function info($name);
}
class B implements A{function info($name){echo "Hello{$name}!";}
}
$obj = new B();
$obj -> info('小桥');
  • interface 接口中可以定义常量但不允许定义成员变量,例如:
<?php
interface A {const Num = 100;
}

没有问题,但是定义成员变量则会出现如下报错信息:Parse error: syntax error, unexpected ‘$num’ (T_VARIABLE), expecting function (T_FUNCTION) or const (T_CONST) in /wwwroot/api.php on line 3 例如:

<?php
interface A {$num = 100;
}
  • 如果子类为非抽象类且类中没有接口里定义的方法时会出现致命错误:Fatal error: Access type for interface method A::info() must be omitted in /wwwroot/api.php on line 2 例如:
<?php
interface A{function info($name);
}
class B implements A{function a($name){echo "Hello{$name}!";}
}
  • interface 接口中方法函数不建议定义默认值,若是定义需要子类也同时定义,例如:
<?php
interface A{function info($name = '小明');
}
class B implements A{function info($name){echo "Hello{$name}!";}
}

会出现 Fatal error: Declaration of B::info(name)mustbecompatiblewithA::info(name) must be compatible with A::info(name)mustbecompatiblewithA::info(name = ‘小明’) in /wwwroot/api.php on line 6 的致命错误,即使你向 info() 方法传递了值,例如:

<?php
interface A{function info($name = '小明');
}
class B implements A{function info($name){echo "Hello{$name}!";}
}$obj = new B();
$obj -> info('小明');
  • 子类可以继承多个接口且接口间能够进行继承:
//定义接口 A
interface A{function info();
}//定义接口 B 并继承接口 A
interface B extends A{function eat($name, $food);
}//定义子类 C 使用接口 B
class C implements B{function info(){echo '接口继承<br/>';}function eat($name = '小明', $food = '菜'){echo $name . "正在吃" . $food . '<br>';}}$demo = new C();
$demo -> info();
$demo -> eat();
$demo -> eat('小红', '苹果');

PHP interface 接口继承(一丶单接口继承)相关推荐

  1. java--类单继承多实现,接口多继承

    继承的表现形式: 单继承:一个类只能继承一个类 多继承:一个接口可以继承多个类,一个类可以实现(implements)多个接口. 类为什么只能单继承 1.java只支持单继承,如果子类继承的多个父类里 ...

  2. php 继承多个接口,PHP接口多继承及tarits实现多继承效果的方法

    本文实例讲述了PHP接口多继承及tarits实现多继承效果的方法.分享给大家供大家参考,具体如下: 接口多继承 在PHP的面向对象中,接口可以继承接口.PHP类只能继承一个父类(单继承),但是接口可以 ...

  3. Java基础---继承、抽象、接口

    第一讲    继承 一.概述         继承是面向对象的一个重要特征.当多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继那个类即可.这时,多 ...

  4. 面试轻松讲清楚 Java 面向对象的问题与知识(类与对象,封装,继承,多态,接口,内部类...)

    写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...

  5. 写底层 jdbc 实现mysql数据库增删改的 合并方法 的类 继承ConnectionFactory 实现DaoMessage接口: 并批量添加数据

    接口: public interface DaoMessage<T> {int ERROR = 0x400;int SUCCESS = 0x200; //接口参数默认finalint ge ...

  6. Java SE(六)之面向对象(封装,继承,多态,接口)

    文章目录 类和对象 1. 创建一个类 2. 创建一个对象 3. 访问变量和方法 4. some tips 封装 修饰符 1. 访问控制修饰符 2. 非访问修饰符 (1)static (2)final ...

  7. java学习第八天继承,抽象类,接口

    日期:2019年11月13日 1.子父类中的构造函数的特点: 在子类构造对象时发现,访问子类构造函数时,父类构造函数也运行了.为啥? 答:在子类的构造函数中第一行默认的隐式语句,super(); ** ...

  8. 如何讲清楚 Java 面向对象的问题与知识?(类与对象,封装,继承,多态,接口,内部类...)

    二 Java面向对象 类和对象 1.1 什么是面向过程?什么又是面向对象? 面向过程--步骤化 面向过程就是分析出实现需求所需要的步骤,通过函数(方法)一步一步实现这些步骤,接着依次调用即可 面向对象 ...

  9. java 接口对象_Java面向对象之接口——interface

    Java面向对象之接口--interface 什么是接口 一般计算机中的接口分为硬件接口和软件接口. 硬件接口:是指两个硬件设备之间的连接方式,既包括物理上的接口,还包括逻辑上的数据传送协议. 软件接 ...

最新文章

  1. java 传入参数_java参数怎么传递参数
  2. javascript精要(1)-script元素
  3. SpringCloud之路由网关zuul(五)
  4. linux中kafka主题修改分区,kafka_2.11-2.0.0的部署与配置修改
  5. ISA Server 2004防火墙的基本配置
  6. python基础-python函数参数为print语句时的输出
  7. 机器学习算法:scikit-learn 线性回归算法总结
  8. 上周Asp.net源码(11.5-11.10)免费下载列表
  9. Python 内置函数介绍
  10. 2021高考成绩查询大学城一中,“有梦就去追,做勇于逐梦的少年”——直击重庆市2021年普通高考...
  11. 机器人焊枪动作与编程实验_工业机器人编程实验.doc
  12. Web开发技术架构图
  13. VMware虚拟机文件后缀详解
  14. flutter图片识别_Flutter 图片解码与缓存管理研究
  15. 小程序源码:未来老婆查询生成器-多玩法安装简单
  16. 论文的可复现性,能否量化分析?
  17. C/C++——游戏界面设置(graphics)
  18. 传统学术研究中有哪些现实问题可望用区块链来解决?
  19. 安装国际版firefox(火狐浏览器)并设置语言为中文
  20. Java阻塞队列-BlockingQueue介绍及实现原理

热门文章

  1. java实现简易五子棋
  2. 四大主流新闻App竞品分析
  3. yii1 ajax,ajax - 在yii 1中使用ajax根据选定的单选按钮选项更新html字段值 - 堆栈内存溢出...
  4. gta5结局杀老崔我哭了_GTA5:玩家眼中的重情义,剧情中变定时炸弹,崔佛为何是个疯子?...
  5. C语⾔的标识符以及规范
  6. 一道好玩的逻辑题之蓝眼睛红眼睛
  7. 2017车载后市场年终回顾:天下武功,唯快不破
  8. 香港等海外公司如何开通认证微信公众号?
  9. segmentation fault(core dump);Run-Time Check Failure #3 -The variable 'p' is being used without bein
  10. Java 基础学习之字符串的简单操作和适配器设计模式