構(gòu)造函數(shù)和折構(gòu)函數(shù)
什么是構(gòu)造函數(shù)和折構(gòu)函數(shù)?慕課的介紹實(shí)在看不懂
class Car {
? function __construct() {
? ? ? print "父類構(gòu)造函數(shù)被調(diào)用\n";
? }
}
class Truck extends Car {
? ?function __construct() {
? ? ? ?print "子類構(gòu)造函數(shù)被調(diào)用\n";
? ? ? ?parent::__construct();
? ?}? //這里也不是嵌套啊,為什么叫子類和父類???
}
$car = new Truck();
同樣,PHP5支持析構(gòu)函數(shù),使用__destruct()進(jìn)行定義,析構(gòu)函數(shù)指的是當(dāng)某個對象的所有引用被刪除,或者對象被顯式的銷毀時會執(zhí)行的函數(shù)。
class Car {
? function __construct() {
? ? ? print "構(gòu)造函數(shù)被調(diào)用 \n";
? }
? function __destruct() {
? ? ? print "析構(gòu)函數(shù)被調(diào)用 \n";
? }
}
$car = new Car(); //實(shí)例化時會調(diào)用構(gòu)造函數(shù)
echo '使用后,準(zhǔn)備銷毀car對象 \n';
unset($car); //銷毀時會調(diào)用析構(gòu)函數(shù)
2016-04-02
class Truck extends Car {
? ?function __construct() {
? ? ? ?print "子類構(gòu)造函數(shù)被調(diào)用\n";
? ? ? ?parent::__construct();
? ?}? //這里也不是嵌套啊,為什么叫子類和父類???
}
這里解釋一下extends是繼承的意思,Truck類繼承了Car類中的屬性和方法,因此Truck里也繼承了Car中的function __construct,也就是構(gòu)造函數(shù),構(gòu)造函數(shù)是當(dāng)類被實(shí)例化,也就是被new出來的時候會自動調(diào)用的函數(shù),因此,truck和car被new的時候構(gòu)造函數(shù)里的語句就會被執(zhí)行。
繼承雖然不是嵌套,但是也是有父類盒子類的關(guān)系,被繼承的是父親,繼承他人屬性的是子類。
unset()函數(shù)會銷毀被實(shí)例化出來的類,也就是對象,這時如果定義了析構(gòu)函數(shù) __destruct(),函數(shù)類的語句就會被調(diào)用。
2016-04-04
構(gòu)造函數(shù)就是,當(dāng)類的對象被創(chuàng)建時,構(gòu)造函數(shù)也被創(chuàng)建并調(diào)用,若沒有寫構(gòu)造函數(shù),類本身也有一個默認(rèn)的構(gòu)造函數(shù),不過默認(rèn)的構(gòu)造是空的,沒有函數(shù)體,所以創(chuàng)建對象的時候沒有什么輸出結(jié)果。但當(dāng)你創(chuàng)建一個構(gòu)造函數(shù)時,會覆蓋原來的默認(rèn)構(gòu)造函數(shù)。 ? ?析構(gòu)函數(shù)也就是對象被銷毀時調(diào)用的函數(shù)。
2016-04-02
竟然老眼昏花到把析看成折了...