Home > Backend Development > PHP Problem > What is the difference between php constructor and java constructor

What is the difference between php constructor and java constructor

WBOY
Release: 2023-03-15 14:42:01
Original
2498 people have browsed it

Difference: 1. When rewriting the subclass constructor, PHP does not call the parent class, but Java calls the parent class constructor before the first statement by default; 2. Java allows multiple constructors, and PHP values ​​allow a constructor; 3. The constructor in Java is required, but not in PHP.

What is the difference between php constructor and java constructor

The operating environment of this article: Windows 10 system, PHP version 7.1, Dell G3 computer.

What is the difference between the PHP construction method and the Java construction method?

Early PHP did not have object-oriented functions, but with the development of PHP, starting from PHP4, object-oriented functions were also added. PHP's object-oriented syntax evolved from JAVA. It is similar in many places, but it has developed its own characteristics. In terms of constructors, the function with the same name as the class in PHP4 is regarded as a constructor (the same as JAVA). However, this writing method is no longer recommended in PHP5. It is recommended to use __construct as the name of the constructor.

1. When rewriting the subclass constructor, PHP will not call the parent class. JAVA will call the parent class constructor before the first statement by default

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

Output result:

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();
Copy after login

Output result:

Calling Child

2. Repeat Loading implementation

JAVA allows multiple constructors with different parameter types and orders. PHP only allows one constructor, but allows default parameters. It cannot implement overloading, but it can simulate the overloading effect.

JAVA 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
    }
}
Copy after login

PHP code

<?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
Copy after login

3. The constructor is necessary in JAVA. If there is no constructor, the compiler will automatically add it, but not in PHP. meeting.

4. The constructor of the parent class in JAVA must be called in the first sentence. In PHP, there is no such restriction, and it can even be called after the last sentence of the constructor.

5. You can call another constructor through this(), PHP does not have a similar function.

class Pen{
    private String _color;
    public Pen(){
             this("red");//必须放在第一行
    }
    
    public Pen(String color){
        this._color = color;
    }
}
Copy after login

Recommended learning: "PHP Video Tutorial"

The above is the detailed content of What is the difference between php constructor and java constructor. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
php
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template