Heim >Backend-Entwicklung >PHP-Problem >Was ist der Unterschied zwischen PHP-Konstruktor und Java-Konstruktor?

Was ist der Unterschied zwischen PHP-Konstruktor und Java-Konstruktor?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2022-03-04 10:29:412533Durchsuche

Unterschiede: 1. Beim Umschreiben des Unterklassenkonstruktors ruft PHP nicht die übergeordnete Klasse auf, sondern Java ruft standardmäßig den übergeordneten Klassenkonstruktor vor der ersten Anweisung auf. 2. Java lässt mehrere Konstruktoren zu, während PHP-Werte einen Konstruktor zulassen. 3. Der Konstruktor in Java ist notwendig, in PHP jedoch nicht.

Was ist der Unterschied zwischen PHP-Konstruktor und Java-Konstruktor?

Die Betriebsumgebung dieses Artikels: Windows 10-System, PHP-Version 7.1, Dell G3-Computer.

Was ist der Unterschied zwischen dem PHP-Konstruktor und dem Java-Konstruktor?

Frühes PHP hatte keine objektorientierten Funktionen, aber mit der Entwicklung von PHP wurde ab PHP4 auch objektorientiert hinzugefügt. Die objektorientierte Syntax von PHP hat sich aus JAVA entwickelt. Sie ist an vielen Stellen ähnlich, hat jedoch ihre eigenen Eigenschaften entwickelt. In Bezug auf Konstruktoren wird die Funktion mit demselben Namen wie die Klasse in PHP4 als Konstruktor betrachtet (dieselbe Schreibmethode wird in PHP5 nicht mehr empfohlen). Es wird empfohlen, __construct als Namen zu verwenden der Konstrukteur.

1. Beim Umschreiben des Unterklassenkonstruktors ruft PHP die übergeordnete Klasse nicht auf und JAVA ruft standardmäßig den übergeordneten Klassenkonstruktor vor der ersten Anweisung auf Child

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();
    }
}

Ausgabeergebnis:

ruft Child

2 auf. Implementierungsmethode der Überladung

JAVA ermöglicht mehrere Konstruktoren mit unterschiedlichen Parametertypen und -reihenfolgen. PHP erlaubt nur einen Konstruktor, erlaubt aber Standardparameter. Es kann keine Überladung implementieren, aber den Überladungseffekt simulieren.

JAVA-Code

<?php
class Father{
    public function __construct(){
        echo "正在调用Father";
    }
}
class Child extends Father{
    public function __construct(){
        echo "正在调用Child";
    }
}
$c = new Child();

PHP-Code

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
    }
}

3. Wenn kein Konstruktor vorhanden ist, fügt der Compiler ihn automatisch hinzu, in PHP jedoch nicht.

4. Der Konstruktor der übergeordneten Klasse in JAVA muss im ersten Satz aufgerufen werden. In PHP gibt es keine solche Einschränkung und kann sogar nach dem letzten Satz des Konstruktors aufgerufen werden.

5. Sie können über this() einen anderen Konstruktor aufrufen, PHP verfügt nicht über eine ähnliche Funktion.

<?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

Empfohlenes Lernen: „

PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen PHP-Konstruktor und Java-Konstruktor?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn