什么是類?
類是定義一系列屬性和操作的模板,而對(duì)象則把類實(shí)例化,然后交給類來(lái)處理
什么是對(duì)象?
對(duì)象就是數(shù)據(jù),對(duì)象本身沒(méi)有方法,但是對(duì)象有一個(gè)"指針",這個(gè)指針指向一個(gè)類,這個(gè)類可以有方法和屬性
什么是方法?
方法描述不不同屬性所導(dǎo)致的不同表現(xiàn)
類和對(duì)象的關(guān)系是什么?
類和對(duì)象是不可分割的,有對(duì)象比定有一個(gè)類和其對(duì)應(yīng),否則這個(gè)對(duì)象也就成了沒(méi)有親人的孩子,(如果由標(biāo)量進(jìn)行強(qiáng)制轉(zhuǎn)換的object,沒(méi)有一個(gè)類和他對(duì)應(yīng),php有一個(gè)stdClass會(huì)被這個(gè)強(qiáng)制轉(zhuǎn)換的對(duì)象所指向)
如何訪問(wèn)靜態(tài)方法?
php對(duì)象訪問(wèn)類中的靜態(tài)屬性的時(shí)候 使用::符號(hào) 如果使用::訪問(wèn)非靜態(tài)屬性的時(shí)候會(huì)導(dǎo)致E_STRICT級(jí)別的錯(cuò)誤,在php.ini配置報(bào)錯(cuò)等級(jí)調(diào)到最高的時(shí)候會(huì)看到錯(cuò)誤 提示 error_reportion = E_ALL|E_STRICT
display_errors = On
php多態(tài)是什么?
多態(tài)是指同一類對(duì)象在運(yùn)行時(shí)的具體化
php語(yǔ)言是弱類型語(yǔ)言,實(shí)現(xiàn)多態(tài)更簡(jiǎn)單.更靈活,php自身就是多態(tài),在語(yǔ)言級(jí)別上不能說(shuō)沒(méi)有多態(tài)
php中父類和子類看做 繼父和繼子的關(guān)系,他們存在繼承關(guān)系,但不是血緣關(guān)系,因此子類無(wú)法向上轉(zhuǎn)型為父類,從而失去多態(tài)最典型的特征
繼承的缺點(diǎn)是什么?
繼承破壞封裝性
繼承是緊耦合的
繼承擴(kuò)展復(fù)雜
順便說(shuō)說(shuō)繼承的特點(diǎn)
子類可以訪問(wèn)父類的公開(kāi)和保護(hù)屬性捣染,反之,訪問(wèn)私有則不可以。
子類最多只能繼承一個(gè)父類骤菠,而父類可以有多個(gè)子類塑猖。
子類不會(huì)繼承父類的析構(gòu)函數(shù)积仗;
如果要在子類里面使用父類的方法,可以用父類名::父類方法來(lái)表示或者用parent::父類方法來(lái)表示
方法和屬性在一定程度上為了理解可以是看做等效的寝并。
面向接口編程(接口為抽象而生),(大多數(shù)設(shè)計(jì)模式是圍繞著接口展開(kāi)的)
如果一個(gè)類聲明了實(shí)現(xiàn) 的接口 如果你實(shí)現(xiàn)某個(gè)接口中的某一個(gè)方法,那么必須實(shí)現(xiàn)其他用不到的方法,就會(huì)造成代碼冗余
接口可以多繼承
接口是一種規(guī)范和契約,作為規(guī)范 接口應(yīng)該保證可使用性,作為契約,接口應(yīng)該保證可控性
接口只是一個(gè)聲明,一旦使用interface關(guān)鍵字,就應(yīng)該實(shí)現(xiàn)它. 可以由外部實(shí)現(xiàn)(程序猿實(shí)現(xiàn)),也可以由內(nèi)部實(shí)現(xiàn)(內(nèi)部接口),接口本身什么都不做,但是他可以告訴我們他可以做什么
php接口缺點(diǎn)
沒(méi)有契約限制
缺少足夠多的內(nèi)部接口(不明白)
反射
反射是指在php運(yùn)行狀態(tài)中,擴(kuò)展分析PHP程序,導(dǎo)出或者提取出關(guān)于類 方法 屬性 參數(shù)等的詳情信息 ,包括注釋.這種動(dòng)態(tài)獲取信息以及動(dòng)態(tài)調(diào)用對(duì)象的功能稱作為反射API
反射可以獲取類的名字 類的屬性和成員 類的訪問(wèn)權(quán)限
在MVC和插件開(kāi)發(fā)中,反射的使用非常常見(jiàn),反射的消比較大.
反射會(huì)破壞封裝的性.可以暴露出方法或者屬性