PHP中抽象類,介面定義
這裡先介紹接口,因為在我最近看的好幾本php工具書中都沒有提到抽象類別。
本人也覺得,在理解了介面後抽象類別也非常好理解。?
範例程式碼隨便寫了一下。例子代碼是很ok的,測試過了不會報錯,懶得看代碼的筒靴們看文字一樣。栗子舉的不好。
程式碼測試環(huán)境:php5.3.29
?
介面(interface):
介面就是為抽象而生的,相當於一個約定或規(guī)範,方便框架搭建,程式碼分工。
它裡面指定了抽象方法的名稱和參數(shù)和成員常數(shù),但不能包含任何的具體方法,變數(shù).
個人認為php是弱型別語言,強調(diào)的是彈性。與java相比php裡的介面對型別要求太鬆弛。不大好用,不建議大量使用。
1)介面中全部是抽象方法。 (因為要用來給子類別實作。所以都要是public或protected的。)
2)介面中不能有具體方法,且只能有成員常數(shù)。
3) 由於php和java c++等強型別語言不同,php是弱型別且動態(tài)型別的本身就不指定回傳類型,參數(shù)的資料型別除四種基本型別不能指定外也可寫可不寫,所以對方法傳回值和參數(shù)的型別無要求。
4)一個類別可以實作多個介面。用法:?implements關(guān)鍵字後實作多個介面用逗號隔開。
interface Car { const name = "車子"; public function run($speed=400,$time=300); } class Xiali implements Car { public function run($s=100,$t=200){//參數(shù)個數(shù)必須相同 echo '哈哈 我會跑'; return 'abc'; } public function fly() { echo '哈哈我會飛'; } }
抽象類別(abstract class):作用和介面一樣,都是為了規(guī)範子類別的功能,只是比介面多包含了具體的內(nèi)容。
1)包含至少一個抽象方法(abstract function)的類別(換言之,任何類別只要有了一個或以上的抽象方法,這個類別就必須是抽象類別。)
2)抽象類別和介面一樣不能實例化。都叫抽象的了,還咋實例化,實例都是具體的。 2333.
3)小結(jié):抽象類別和普通類別兩個區(qū)別:1.至少包含一個抽象方法 2.不能實例化。別的都一樣。
4)用法:
abstract class Father{ abstract function func1();//至少一個抽象方法。 public function func2(){//具體方法隨便寫。 echo 'func2'; $this->func3(); } private function func3(){ echo '一個private方法'; } }
實現(xiàn)繼承到的抽象方法時
/** * 繼承抽象類 * 必須實現(xiàn)其所有抽象方法 * 和普通一樣,一個類也只能繼承一個抽象類 */ class Son extends Father { public function func1() { echo '實現(xiàn)(重寫)抽象方法。參數(shù)名個數(shù)必須相同' } }

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)