區別:1、重寫子類別建構子時,PHP不呼叫父類,而java預設在第一個語句前呼叫父類建構方法;2、Java允許有多個建構方法,而PHP值允許有一個構造方法;3、Java中的構造方法是必須的,而PHP中的則不是。
本文操作環境:Windows10系統、PHP7.1版、Dell G3電腦。
早期的PHP是沒有物件導向功能的,但隨著PHP發展,從PHP4開始,也加入了物件導向。 PHP的物件導向語法是從JAVA演化而來,很多地方類似,但又發展出自己的特色。以建構子來說,PHP4中與類別同名的函數就被視為建構子(與JAVA一樣),但是PHP5中已經不推薦這種寫法了,推薦用__construct作為建構子的名稱。
1.重寫子類別建構子的時候,PHP會不呼叫父類,JAVA預設在第一個語句前呼叫父類別建構子
JAVA
class Father{ public Father(){ System.out.println("this is fahter"); } } class Child extends Father{ public Child(){ System.out.println("this is Child"); } } public class Test { public static void main(String[] args){ Child c = new Child(); } }
輸出結果:
this is fahter
this is Child
<?php class Father{ public function __construct(){ echo "正在调用Father"; } } class Child extends Father{ public function __construct(){ echo "正在调用Child"; } } $c = new Child();
輸出結果:
正在呼叫Child
#2.重載的實作方式
JAVA允許有多個建構函數,參數的型別和順序各不相同。 PHP只允許有一個建構函數,但允許有預設參數,無法實現重載,但可以模擬重載效果。
JAVA程式碼
class Car{ private String _color; //设置两个构造函数,一个需要参数一个不需要参数 public Car(String color){ this._color = color; } public Car(){ this._color = "red"; } public String getCarColor(){ return this._color; } } public class TestCar { public static void main(String[] args){ Car c1 = new Car(); System.out.println(c1.getCarColor()); //打印red Car c2 = new Car("black"); System.out.println(c2.getCarColor()); //打印black } }
PHP程式碼
<?php class Car{ private $_color; //构造函数带上默认参数 public function __construct($color="red"){ $this->_color = $color; } public function getCarColor(){ return $this->_color; } } $c1 = new Car(); echo $c1->getCarColor(); //red $c2 = new Car('black'); echo $c2->getCarColor(); //black
3.JAVA中建構函數是必須的,如果沒有建構函數,編譯器會自動加上,PHP中則不會。
4.JAVA中父類別的建構子必須在第一句被調用,PHP的話沒有這個限制,甚至可以在建構子最後一句後再調用。
5.可以透過this()呼叫另一個建構函數,PHP沒有類似功能。
class Pen{ private String _color; public Pen(){ this("red");//必须放在第一行 } public Pen(String color){ this._color = color; } }
推薦學習:《PHP影片教學》
以上是php構造方法和java建構方法有什麼差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!