《PHP實(shí)戰(zhàn):php構(gòu)造方法中析構(gòu)方法在繼承中的表現(xiàn)》要點(diǎn):
本文介紹了PHP實(shí)戰(zhàn):php構(gòu)造方法中析構(gòu)方法在繼承中的表現(xiàn),希望對您有用。如果有疑問,可以聯(lián)系我們。
本文為大家分享了php構(gòu)造辦法之析構(gòu)辦法在繼承中的表現(xiàn),供大家參考,具體內(nèi)容如下PHP編程
子類中沒有定義構(gòu)造方法時(shí),會自動調(diào)用父類的構(gòu)造方法.因此實(shí)例化子類時(shí),需依照父類的構(gòu)造方法的形式進(jìn)行.PHP編程
PHP編程
修改為:PHP編程
PHP編程
子類定義了自己的構(gòu)造辦法,則不會自動調(diào)用父類的構(gòu)造辦法,但可以手動調(diào)用:parent::__construct();PHP編程
但通常,在子類,很多時(shí)候,在構(gòu)造辦法中,都應(yīng)該(需要)去調(diào)用父類的構(gòu)造辦法以節(jié)省代碼,增加可讀性:PHP編程
PHP編程
子類中沒有定義析構(gòu)辦法時(shí),會自動調(diào)用父類的析構(gòu)辦法.子類定義了自己的析構(gòu)辦法,則不會自動調(diào)用父類的析構(gòu)辦法,但可以手動調(diào)用:parent::__destruct().重寫overridePHP編程
重寫又叫覆蓋,就是將從父類繼承下來的屬性或辦法重新“定義”――就是從新寫.PHP編程
PHP編程
但注意:子類覆蓋父類的辦法,雖然可以去調(diào)用父類的同名辦法去完成一定的工作,但不是必須的.也有可能父類的該辦法所執(zhí)行的結(jié)果并不適合子類,此時(shí)子類就去完全自己寫了.PHP編程
重寫的基本要求:PHP編程
拜訪控制權(quán)限:下級的拜訪控制權(quán)限應(yīng)該不低于上級的拜訪控制權(quán)限:上級:public 下級:只能public上級:protected 下級: protected, public上級:private 下級:private protected public――實(shí)際此情況無意義.私有的不能覆蓋,而是完全當(dāng)作自己全新的.PHP編程
辦法的參數(shù)形式:應(yīng)該跟父類的一致.PHP編程
PHP編程
PHP編程
私有屬性和私有方法的重寫問題:私有屬性和方法都不能覆蓋,但其實(shí)子類可以定義跟父類私有的同名屬性或方法.只是當(dāng)作一個(gè)自身的新的屬性或方法來看待罷了.不過方法的參數(shù)必須一致.構(gòu)造方法的重寫問題:構(gòu)造方法不但可以像其他普通方法一樣重寫,而且,比普通方法更寬松:重寫的時(shí)候參數(shù)可以不一致.PHP編程
PHP編程
最終類final class:PHP編程
通常,一個(gè)類,沒有特別聲明的話,則“別人”就可以隨意拿過來使用并對之進(jìn)行“擴(kuò)展”――繼承.PHP編程
但是:PHP編程
如果某個(gè)類不希望對其進(jìn)行擴(kuò)展,則可以將其聲明為“最終類”.PHP編程
形式:PHP編程
final class 類名{ ....類定義....}PHP編程
最終辦法final methodPHP編程
通常,一個(gè)辦法,如果沒有特別聲明,則下級類就可以對其進(jìn)行“覆蓋”(重寫).PHP編程
但是:PHP編程
如果某個(gè)辦法不希望被下級類覆蓋,就可以對其生命為“最終辦法”.PHP編程
形式:PHP編程
final function 辦法名(){....辦法定義....}PHP編程
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所贊助.PHP編程
歡迎參與《PHP實(shí)戰(zhàn):php構(gòu)造方法中析構(gòu)方法在繼承中的表現(xiàn)》討論,分享您的想法,維易PHP學(xué)院為您提供專業(yè)教程。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/6926.html