本文目錄一覽:
- 1、在php中,子類extends繼承了父類,當子類和父類同時存在構造函數__construct先執行哪一個呢?
- 2、php中::是什麼意思?
- 3、php 繼承問題 所謂的覆蓋父類的公共以及受保護的方法,但是父類的方法還是存在的且能夠訪問的?是嗎?
在php中,子類extends繼承了父類,當子類和父類同時存在構造函數__construct先執行哪一個呢?
1、如果父類和子類中都沒有顯式的定義__construct,在實例化子類對象時,只會隱含的調用子類自己的構造方法。
2、如果父類中有顯式的構造方法__construct,而子類中沒有定義__construct,在實例化子類對象時,就會調用父類中的構造方法。
3、如果父類和子類中都顯式的定義了__construct,在實例化子類對象時,只會調用子類自己的構造方法(這就像是子類重構了父類的構造方法),而如果也想要調用父類的構造方法的話,就需要在子類的__construct 方法中顯式的調用,(如 __construct(){ parent::_construct();})。
擴展資料
子類的構造函數名與子類名相同。
在子類里父類的構造函數不會自動執行。
要在子類里執行父類的構造函數,必須執行類似以下語句:
$this-[父類的構造函數名()]
類的構造函數統一命名為__construct()。
子類的構造函數名也是__construct()(也是廢話)。
在子類里父類的構造函數會不會執行,分兩種情況:
1、如子類不定義構造函數 __construct(),則父類的構造函數默認會被繼承下來,且會自動執行。
2、如子類定義了構造函數 __construct(),因為構造函數名也是__construct(),所以子類的構造函數實際上是覆蓋(override)了父類的構造函數。這時執行的是該子類的構造函數。
這時如果要在子類里執行父類的構造函數,必須執行類似以下語句:parent::__construct();
參考資料來源:
百度百科——繼承
php中::是什麼意思?
一、php中的::是調用類中的靜態方法或者常量,屬性的符號。PHP,是英文超級文本預處理語言Hypertext Preprocessor的縮寫。中文名:「超文本預處理器」是一種通用開源腳本語言。
二、PHP 是一種 HTML 內嵌式的語言,是一種在伺服器端執行的嵌入HTML文檔的腳本語言,語言的風格有類似於C語言,語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。
三、PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標準通用標記語言下的一個應用)文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多,PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。被廣泛的運用。
例如
1、class aaa{
static function ar(){
}
function br(){}
}
2、使用非靜態方法,要先創建實例
$obj = new aaa();
$obj – br();
3、使用靜態方法,無需創建實例,直接使用類名
aaa::ar();
擴展資料:
1、PHP作為網路開發的強大語言之一,現在應用非常廣泛,具有開放源代碼,跨平台性強,開發快捷,效率高,面向對象,並且易於上手,專業專註等諸多優點。
2、各種PHP開發框架也讓程序開發變的簡單有效。
3、php框架對很多新手而言可能會覺得很難攀越,其實不然 ,只要知道一個框架的流程,明白原理了,基本類似框架都可以看懂,php框架真正的發展要從php5開始了,其實php4時代就有一些框架,但是因為框架並沒有給大家帶來多方便而覺得很複雜,速度沒有純php好,所以一直到了php5才有大的發展,php5的面向對象模型的修改對框架的發展起了很大的作用。
參考鏈接:PHP框架_百度百科
php 繼承問題 所謂的覆蓋父類的公共以及受保護的方法,但是父類的方法還是存在的且能夠訪問的?是嗎?
是的,父類的方法仍然能夠訪問,可以在class b中,新建一個方法,訪問parent::m();
但是你的$li中,包含的m方法,只有類b種的m方法
原創文章,作者:QMJD,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/131637.html