在物件導向程式設計中有很多地方會用到介面,那麼介面是什麼。我個人理解介面就是乙個協議,乙個我們如果使用了某個東西,就得去遵守的協議。但是這個協議只是要求你做某個事情,不管你怎麼做,也就是說必須得實現它的方法,至於怎麼實現你自己做。這裡如果直接講介面得語法,感覺沒有多大意義所以 我就從實現以及思想的變化開始分析。
抽象類:
abstract
class
abs
class
myclass
extends
abs}
介面類以abstract 開頭修飾定義,可定義類屬性,但是不能是抽象,其內部方法以abstract修飾則是抽象方法不需要加{}直接以『;』結尾,方法可加引數可預設,繼承抽象類的類必須要要實現其抽象的方法,且引數型別和數量得一致,訪問控制修飾符必須要大於或等於其抽象方法定義得控制修飾。
介面:
inte***ce
inter
class
myinter
implements
inter
}
對於介面來說就相對更加純粹,就是定義了乙個介面,所有的方法都得對外公開不在像抽象類一樣可能還存在自己得私有方法,也不能定義屬性,實現介面就必須的按照其標準來實現介面。
基礎語法上面就簡單的介紹了一些,下面我就來仔細說下在實際開發中其具體作用,
我們想到創造乙個外星人撩妹想法,但是我們肯定做不出來的嗎,emmm比較技術不行,好吧 叫別人做。嘟嘟嘟!有人接單,好了他們開始生產。
class
alien
public
function
say()
}$alien = new alien("說漢語");
$alien->say();
很快廠家還很人性化得做了多語言支援,一下子就功能很強大,我們就拿去撩妹。撩妹開始:
妹:hi boy;
外星人:hi;
外星人:girl;
外星人:can;
…..
然後我們發現這東西並沒有什麼用,一次只能說乙個單詞並不能很順利的把妹,妹子都無聊的走了,好吧!我們申請廠家重做要求說話流利。然而廠家並不會。蛋疼,我們只能叫另外乙個廠家做,好了人家接單了。
class
alien
}$alien = new alien("漢語");
$alien->speak(2);
嘟嘟!好了 乙個多語言說話且流利的外星人出來了,搗鼓了一下,發現開關並不是原來的那種換了,不管了開始撩妹;
妹:你好;
外星人:你好;
妹:你怎麼這麼可愛啊,
外星人:我不可愛,謝謝;
妹:。。。。
還沒有開始撩就失敗了因為這個外星人不幽默,我們重複上面的想法繼續吧,然後n年過來。。。。。還是沒有撩到妹,因為他們製造的外星人是這樣的。
class
alien
public
function
say($speed)
}$alien = new alien();
這樣的。
class
alien
public setspeed($speed)
public
function
say()
}$alien = new alien();
好吧 我們不談論誰做的好不好,光是這麼多外星人怎麼用我們都已經暈了,哪有心思去把妹,這樣下去注孤生。怎麼辦哦,而且這樣下去還可能出現各種各樣的外星人,肯定是不行的,你要說靠我自己,靠自己是不可能的這輩子都不可能靠自己撩妹。好吧絞盡腦汁,我覺得設計乙個模型給廠家讓他們按照我的模型來做,
嘟嘟!;
inte***ce
alienmodel
好了 什麼都不要跟我說,我就只要這麼乙個功能這樣用,就這樣了交給廠家了。
然後廠家就做出來各種各樣的,就拿一種:
class
alien
}public
function
say()
public
function
setspeed
($speed)
}
這樣 我不管那麼多 我就直接按乙個開關就要開始說話。撩妹,這樣的話 我不管怎麼樣 我就按一下一樣的鍵位就能用,其他的就屬於廠家的調控了,這樣我就更加撩妹研究了,
以上是從**的角度來說明對於介面的定義和實際作用有很多種說法,本人較菜只能說這麼多。
可以參考這種的
抽象介面 php,簡述php抽象類和介面例項
抽象類 1 抽象類中可以宣告各種型別的變數。2 類中只要有抽象方法這個類就必須申明為抽象類。抽象方法的定義 abstract 修飾符 function 方法名 param 3 抽象類中的抽象方法,在子類中必須實現,並且保持引數一致,但是可以使用額外的預設值。4 抽象類不可以直接例項化。abstrac...
PHP抽象類和介面用法例項詳解
前言 對於oop,估計大多數人並不陌生。有些人除php外也學習不少其他語言,會發現php的不同之處,可能語法極其醜陋,但並不妨礙它成為世界上最好的語言 邪教語言 php可以允許常量作為介面的一部分,而對於抽象的理解十分重要。計算機上,對抽象的理解與自然語言中我們每天使用的抽象概念有所不同。比如,我們...
php介面 抽象類
定義為抽象的類不能被例項化。任何乙個類,如果它裡面至少有乙個方法是被宣告為抽象的,那麼這個類就必須被宣告為抽象的。抽象類可以沒有抽象方法,但是抽象類依然不能被例項化 被定義為抽象的方法只是宣告了其呼叫方式 引數 不能定義其具體的功能實現。如abstract class abstractclass a...