PHP中類的繼承和建構函式的繼承

2021-09-08 18:46:03 字數 1207 閱讀 3698

php4.x 版本:

php 4.x 的建構函式名與類名相同。

子類的建構函式名與子類名相同(廢話)。

在子類裡父類的建構函式不會自動執行。

要在子類裡執行父類的建構函式,必須執行類似以下語句:

$this->[父類的建構函式名()]
例如:

class base1 

} class class1 extends base1

} $c1 = new class1;

php5.x 版本:

php5.0 以上版本對類的功能進行了很大的擴充。類的建構函式統一命名為__construct()。

子類的建構函式名也是__construct()(也是廢話)。

在子類裡父類的建構函式會不會執行,分兩種情況:

1、如子類不定義建構函式 __construct(),則父類的建構函式缺省會被繼承下來,且會自動執行。

2、如子類定義了建構函式 __construct(),因為建構函式名也是__construct(),所以子類的建構函式實際上是覆蓋(override)了父類的建構函式。這時執行的是該子類的建構函式。

這時如果要在子類裡執行父類的建構函式,必須執行類似以下語句:

parent::__construct();
例如:

class base2 

function __destruct() {}

}class class2 extends base2

}

注意 parent::__construct(); 語句不一定必須放在子類的建構函式中。放在子類的建構函式中僅僅保證了其在子類被例項化時自動執行。

php4.0 和 5.0 類建構函式的相容問題:

在 php5.0 以上版本裡,還相容了 4.0 版本的建構函式的定義規則。如果同時定義了4.0的建構函式和 __construct()函式,則__construct() 函式優先。

為了使類**同時相容 php4.0 和 5.0,可以採取以下的方式:

class class3 

function class3() //for php4.0

}$c3 = new class3;

物件導向 PHP中類的繼承和建構函式

php4.x 版本 php 4.x 的建構函式名與類名相同。子類的建構函式名與子類名相同 廢話 在子類裡父類的建構函式不會自動執行。要在子類裡執行父類的建構函式,必須執行類似以下語句 this 父類的建構函式名 例如 class base1 class class1 extends base1 c1...

編寫繼承類的複製建構函式和建構函式

當基類存在私有成員時,應該如何編寫繼承類的複製建構函式呢?方法是在複製建構函式的初始化成員列表中呼叫基類的複製建構函式。class base class derived public base derived const derived obj base obj j obj.j private in...

類繼承 繼承類的建構函式

派生類不能直接訪問基類的私有成員,必須通過基類提供的公有方法。派生類不能繼承基類的建構函式,因為建構函式和成員函式存在區別 建構函式用於建立新的物件,而其他成員函式是被現有的物件呼叫。派生類建構函式必須使用基類的建構函式。建立派生類物件時,先建立基類物件,因此基類物件應該在進入派生類建構函式之前被建...