亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

構造函數和折構函數

什么是構造函數和折構函數?慕課的介紹實在看不懂


class Car {
? function __construct() {
? ? ? print "父類構造函數被調用\n";
? }
}
class Truck extends Car {
? ?function __construct() {
? ? ? ?print "子類構造函數被調用\n";
? ? ? ?parent::__construct();
? ?}? //這里也不是嵌套啊,為什么叫子類和父類???
}
$car = new Truck();

同樣,PHP5支持析構函數,使用__destruct()進行定義,析構函數指的是當某個對象的所有引用被刪除,或者對象被顯式的銷毀時會執行的函數。

class Car {
? function __construct() {
? ? ? print "構造函數被調用 \n";
? }
? function __destruct() {
? ? ? print "析構函數被調用 \n";
? }
}
$car = new Car(); //實例化時會調用構造函數
echo '使用后,準備銷毀car對象 \n';
unset($car); //銷毀時會調用析構函數


正在回答

3 回答

class Truck extends Car {
? ?function __construct() {
? ? ? ?print "子類構造函數被調用\n";
? ? ? ?parent::__construct();
? ?}? //這里也不是嵌套啊,為什么叫子類和父類???
}

這里解釋一下extends是繼承的意思,Truck類繼承了Car類中的屬性和方法,因此Truck里也繼承了Car中的function __construct,也就是構造函數,構造函數是當類被實例化,也就是被new出來的時候會自動調用的函數,因此,truck和car被new的時候構造函數里的語句就會被執行。

繼承雖然不是嵌套,但是也是有父類盒子類的關系,被繼承的是父親,繼承他人屬性的是子類。

unset()函數會銷毀被實例化出來的類,也就是對象,這時如果定義了析構函數 __destruct(),函數類的語句就會被調用。

1 回復 有任何疑惑可以回復我~
#1

SAGEGSDAGESE 提問者

非常感謝!
2016-04-05 回復 有任何疑惑可以回復我~

構造函數就是,當類的對象被創建時,構造函數也被創建并調用,若沒有寫構造函數,類本身也有一個默認的構造函數,不過默認的構造是空的,沒有函數體,所以創建對象的時候沒有什么輸出結果。但當你創建一個構造函數時,會覆蓋原來的默認構造函數。 ? ?析構函數也就是對象被銷毀時調用的函數。

1 回復 有任何疑惑可以回復我~

竟然老眼昏花到把析看成折了...

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
PHP進階篇
  • 參與學習       181921    人
  • 解答問題       2668    個

輕松學習PHP中級課程,進行全面了解,用PHP快速開發網站程序

進入課程

構造函數和折構函數

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號