7.8.3 PHP面向?qū)ο蠼涌诩夹g(shù)
PHP與大多數(shù)面向?qū)ο缶幊陶Z言一樣叭首,不支持多重繼承,也就是說每個類只能繼承一個父類。為了解決這個這個問題临谱,PHP引入了接口,接口的思想是指定了一個實現(xiàn)了該接口的類必須實現(xiàn)的一系列函數(shù)奴璃。
如果在一個抽象類中包含的只有抽象方法悉默,可以將其定義為interface(接口),用implements(實現(xiàn))關(guān)鍵字使用它苟穆。?
定義格式:
interface 接口名稱{
//常量成員 (使用const關(guān)鍵字定義)
//抽象方法 (不需要使用abstract關(guān)鍵字)
}? 使用格式: class 類名 implements 接口名1,接口名2{ ... ... }?當一個類在繼承了一個接口后抄课,它必須實現(xiàn)即覆蓋該接口的所有方法才可以實例化使用,否則即為抽象類雳旅。
抽象類與接口的區(qū)別
定義
抽象類表示該類中可能已經(jīng)有一些方法的具體定義跟磨。
接口就僅僅只能定義各個方法的界面,不能有具體的實現(xiàn)代碼在成員方法中攒盈。
用法
抽象類是子類用來繼承的抵拘,當父類已有實際功能的方法時,該方法在子類中可以不必實現(xiàn)型豁。
實現(xiàn)一個接口僵蛛,必須實現(xiàn)接口中所有定義的方法尚蝌,不能遺漏任何一個。
<?php
/* 抽象類是一種抽象的類充尉, 接口是一種特殊的抽象類, 接口也是一種特殊特殊的類
*
* 1. 抽象類和接口中都有抽象方法
* 2. 抽象類和接口都不能創(chuàng)建實例對象
* 3. 抽象類和接口的使用意義也就是作用相同
*
* 接口和抽象類相比飘言, 特殊在哪里?
*
* 1. 接口中的方法,必須全要是抽象方法(不能用不抽象的方法)
* 所以在接口中的抽象方法不需要使用abstract, 直接使用分號結(jié)束即可
*
* 2. 接口中的成員屬性驼侠, 必須是常量(不能有變量)
*
* 3. 所有的權(quán)限必須是公有的(public)
*
* 4. 聲明接口不使用class, 而是使用interface
*
*/
//聲明一個接口使用interface
interface Demo {
const NAME="妹子";
const AGE = 20;
public function test();
public function test2();
function test3();
}