Différences : 1. Lors de la réécriture du constructeur de sous-classe, PHP n'appelle pas la classe parent, mais Java appelle le constructeur de classe parent avant la première instruction par défaut ; 2. Java autorise plusieurs constructeurs, tandis que les valeurs PHP autorisent un constructeur ; 3. Le constructeur en Java est nécessaire, mais pas en PHP.
L'environnement d'exploitation de cet article : système Windows 10, PHP version 7.1, ordinateur Dell G3.
Les premiers PHP n'avaient pas de fonctions orientées objet, mais avec le développement de PHP, à partir de PHP4, l'orientation objet a également été ajoutée. La syntaxe orientée objet de PHP a évolué à partir de JAVA. Elle est similaire à bien des égards, mais elle a développé ses propres caractéristiques. En termes de constructeurs, la fonction portant le même nom que la classe en PHP4 est considérée comme un constructeur (au même titre que JAVA). Cependant, cette méthode d'écriture n'est plus recommandée en PHP5. Il est recommandé d'utiliser __construct comme nom de. le constructeur.
1. Lors de la réécriture du constructeur de sous-classe, PHP n'appellera pas la classe parent et JAVA appellera le constructeur de la classe parent avant la première instruction par défaut
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(); } }
Résultat de sortie :
c'est plus tard
c'est Child
<?php class Father{ public function __construct(){ echo "正在调用Father"; } } class Child extends Father{ public function __construct(){ echo "正在调用Child"; } } $c = new Child();
Résultat de sortie :
appelle Child
2 La méthode d'implémentation de surcharge
JAVA autorise plusieurs constructeurs avec différents types et ordres de paramètres. PHP n'autorise qu'un seul constructeur, mais autorise les paramètres par défaut. Il ne peut pas implémenter la surcharge, mais il peut simuler l'effet de surcharge.
Code 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 } }
Code 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. Le constructeur est nécessaire en JAVA S'il n'y a pas de constructeur, le compilateur l'ajoutera automatiquement, mais pas en PHP.
4. Le constructeur de la classe parent en JAVA doit être appelé dans la première phrase. En PHP, il n'y a pas de telle restriction.
5. Vous pouvez appeler un autre constructeur via this(), PHP n'a pas de fonction similaire.
class Pen{ private String _color; public Pen(){ this("red");//必须放在第一行 } public Pen(String color){ this._color = color; } }
Apprentissage recommandé : "Tutoriel vidéo PHP"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!