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.
The operating environment of this article: Windows 10 system, PHP version 7.1, Dell G3 computer.
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(); } }
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();
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 } }
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('black'); echo $c2->getCarColor(); //black
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; } }
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!