接口的含义是:“对于实现我的所有类,看起来都是像我这个样子”,一个固定的接口,使用他的所有代码都知道对于那个接口会调用什么方法。
接口是一个抽象类的变体,接口中所有的方法都是抽象的
例如:
```
<?php
/**
* User: 三千
* Date: 16/3/30
* Time: 下午4:08
*/
interface mobile{
//驱动方法
public function run();
}
class plain implements mobile{
public function run(){
echo "这是飞机";
}
public function fly(){
echo "这是飞";
}
}
class car implements mobile{
public function run(){
echo "这是汽车";
}
}
class machine{
function demo(mobile $a){
$a->fly();
}
}
$obj = new machine();
$obj->demo(new plain());
$obj->demo(new car());
```
返回结果:
```
changzuxindeMacBook-Pro% php 1.4.1.php
这是飞
Fatal error: Call to undefined method car::fly() in /Users/changzuxin/www/code/php_core/1.4.1.php on line 31
```
可以看到,第一个执行成功了,但是第二个执行失败了。
这段代码实际上是错误的,不符合接口语义。在PHP中,对plain实例进行检测时是可以运行的。也就是说在PHP里,只关心方法是否存实现,而不关心接口语义是否正确。
在java里,接口就是一种type,如果你打破了约定,那么你就是非法的,这符合逻辑也符合现实的世界。
这样做的好处就是,比如说我们对数据库进行操作的时候,不需要考虑是MySQL还是Oracle,操作缓存的时候,不需要考虑是文件缓存还是内存缓存,只需要实现写入、读取、清楚等功能点就行。
在大型项目中,会把代码进行分层和分工。核心开发人员开发流程和代码,基础人员通过这些接口来实现具体业务。
- 空白目录
- 第1章 面向对象思想的核心概念
- 1.1 面向对象的“形”与“本”
- 1.1.1 对象的“形”
- 1.1.2 对象的“本质”
- 1.1.3 对象与数组
- 1.1.4 对象与类
- 1.2 魔术方法的应用
- 1.2.1 construct和destruct方法
- 1.2.2 set和get方法
- 1.2.3 call和callStatic方法
- 1.2.4 __toString方法
- 1.3 继承与多态
- 1.3.1 类的组合与继承
- 1.3.2 各种语言中的多态
- 1.4 面向接口编程
- 1.4.1 接口的作用
- 1.4.2 对接口的思考
- 1.5 反射
- 1.5.1 如何使用反射API
- 1.6 异常和错误处理
- 1.6.1 如何使用异常处理机制
- 1.6.2 怎样看PHP的异常
- 1.6.3 PHP中的错误级别
- 1.6.4 PHP中的错误处理机制
- 1.7 本章小结
- 第2章 面向对象的设计原则
- 2.1 面向对象设计的五大原则
- 2.2 一个面向对象留言本的实例
- 2.3 面向对象的思考
- 2.4 本章小结
- 第3章 正则表达式基础与应用
- 3.1 认识正则表达式
- 3.2 正则表达式中的元字符
- 3.3 正则表达式匹配规则
- 3.4 构造正则表达式
- 3.5 正则在实际开发中的应用
- 3.6 正则表达式的效率与优化
- 3.7 本章小结