構造函數和折構函數
什么是構造函數和折構函數?慕課的介紹實在看不懂
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); //銷毀時會調用析構函數
2016-04-02
class Truck extends Car {
? ?function __construct() {
? ? ? ?print "子類構造函數被調用\n";
? ? ? ?parent::__construct();
? ?}? //這里也不是嵌套啊,為什么叫子類和父類???
}
這里解釋一下extends是繼承的意思,Truck類繼承了Car類中的屬性和方法,因此Truck里也繼承了Car中的function __construct,也就是構造函數,構造函數是當類被實例化,也就是被new出來的時候會自動調用的函數,因此,truck和car被new的時候構造函數里的語句就會被執行。
繼承雖然不是嵌套,但是也是有父類盒子類的關系,被繼承的是父親,繼承他人屬性的是子類。
unset()函數會銷毀被實例化出來的類,也就是對象,這時如果定義了析構函數 __destruct(),函數類的語句就會被調用。
2016-04-04
構造函數就是,當類的對象被創建時,構造函數也被創建并調用,若沒有寫構造函數,類本身也有一個默認的構造函數,不過默認的構造是空的,沒有函數體,所以創建對象的時候沒有什么輸出結果。但當你創建一個構造函數時,會覆蓋原來的默認構造函數。 ? ?析構函數也就是對象被銷毀時調用的函數。
2016-04-02
竟然老眼昏花到把析看成折了...