차이점: 1. 하위 클래스 생성자를 다시 작성할 때 PHP는 상위 클래스를 호출하지 않지만 Java는 기본적으로 첫 번째 명령문 전에 상위 클래스 생성자를 호출합니다. 2. Java는 여러 생성자를 허용하지만 PHP 값은 생성자를 허용합니다. 3. Java에서는 생성자가 필요하지만 PHP에서는 그렇지 않습니다.
이 문서의 운영 환경: Windows 10 시스템, PHP 버전 7.1, Dell G3 컴퓨터.
초기 PHP에는 객체지향 기능이 없었지만, PHP가 발전하면서 PHP4부터 객체지향 기능도 추가되었습니다. PHP의 객체 지향 구문은 JAVA에서 발전한 것입니다. 많은 부분에서 유사하지만 고유한 특성을 발전시켰습니다. 생성자 측면에서는 PHP4의 클래스와 동일한 이름을 가진 함수를 생성자로 간주합니다(JAVA와 동일). 그러나 PHP5에서는 더 이상 이 작성 방법을 권장하지 않습니다. 생성자.
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(); } }
출력 결과:
이것은 fahter입니다
이것은 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 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. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!