首頁  >  文章  >  後端開發  >  php構造方法和java建構方法有什麼差別

php構造方法和java建構方法有什麼差別

WBOY
WBOY原創
2022-03-04 10:29:412452瀏覽

區別:1、重寫子類別建構子時,PHP不呼叫父類,而java預設在第一個語句前呼叫父類建構方法;2、Java允許有多個建構方法,而PHP值允許有一個構造方法;3、Java中的構造方法是必須的,而PHP中的則不是。

php構造方法和java建構方法有什麼差別

本文操作環境:Windows10系統、PHP7.1版、Dell G3電腦。

php建構方法和java建構方法有什麼差別

早期的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(&#39;black&#39;);
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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn