接口的含義是:“對于實現我的所有類,看起來都是像我這個樣子”,一個固定的接口,使用他的所有代碼都知道對于那個接口會調用什么方法。
接口是一個抽象類的變體,接口中所有的方法都是抽象的
例如:
```
<?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 本章小結