在php中,如果A擴展了B,那麼當A被實例化時,B的_constrctor()會自動執行嗎?或者我必須調用父 - > _構造函數()?在php中繼承執行__constructor()繼承
3
A
回答
8
PHP尋找最能夠找到的最頂層(最接近實例化的類)__construct
的方法。然後它只執行那一個。
Class A {
public function __construct() {
echo "From A";
}
}
Class B extends A {
public function __construct() {
echo "From B";
}
}
Class C extends A {}
Class D extends B {}
Class E extends B {
public function __construct() {
echo "from E";
}
}
new A(); // From A
new B(); // From B
new C(); // From A
new D(); // From B
new E(); // From E
而且parent
訪問下一個該名單,直到有沒有更多的(此時它會產生一個錯誤)......
所以,在E
類,運行parent::__construct()
將執行類B
的構造函數。
在類B
中,運行parent::__construct()
將執行類A
的構造函數。
在A
類,運行parent::__construct()
因爲沒有構造函數會產生一個錯誤......
1
答案是你必須調用它。
一個簡單的測試:
class A {
public function __construct() {
echo 'A';
}
}
class B extends A {
public function __construct() {
echo 'B';
}
}
$ab = new B();
應該告訴你所有你需要知道的。
0
你需要調用「父:: __結構()」從A的構造函數,如果A有一個。否則你不需要。
0
class A {
function __construct() {
echo 5;
}
}
class B_no_Constructor extends A {
}
class B_with_Constructor extends A {
function __construct(){}
}
//try one
//new B_no_Constructor; //outputs 5
//new B_with_Constructor; //outputs nothing
相關問題
- 1. 繼承在PHP
- 2. 繼承在PHP
- 3. PHP使類繼承可繼承
- 4. 繼承PHP類
- 5. Php繼承
- 6. 在xml中繼承繼承視圖
- 7. 其他繼承類中的繼承類
- 8. PHP繼承循環
- 9. Php繼承問題
- 10. PHP類繼承Codeigniter
- 11. PHP多類繼承
- 12. PHP構造繼承
- 13. PHP:繼承問題
- 14. 瞭解PHP繼承
- 15. 繼承問題在PHP
- 16. 例外的繼承在PHP
- 17. PHP中的表單繼承?
- 18. PHP中的多繼承
- 19. PHP中的OOP繼承
- 20. PHP中的多級繼承
- 21. PHP中的繼承類型
- 22. 在jsf中繼承
- 23. 繼承在Java中
- 24. 繼承在Java中
- 25. 繼承
- 26. 繼承
- 27. 繼承
- 28. 繼承
- 29. 繼承
- 30. 繼承
快速而清晰。非常感謝你。 – 2011-01-07 21:11:54