자식 클래스에서 부모 생성자 메서드를 호출하는 동안 두 가지 경우에 직면하게 됩니다.
사례1
자식 클래스가 생성자를 정의하면 자식 클래스에서 부모 클래스 생성자를 직접 실행할 수 없습니다. 부모 생성자를 실행하기 위해서는 자식 생성자 내에서 parent::__construct() 호출이 필요합니다.
예시
<?php class grandpa{ public function __construct(){ echo "I am in Tutorials Point"."\n"; } } class papa extends grandpa{ public function __construct(){ parent::__construct(); echo "I am not in Tutorials Point"; } } $obj = new papa(); ?>
Output: I am in Tutorials Point I am not in Tutorials Point
설명
위의 예에서 우리는 parent::__construct()를 사용하여 부모 클래스 생성자를 호출했습니다.
사례2
자식이 생성자를 정의하지 않으면 일반 클래스 메서드와 마찬가지로 부모 클래스에서 상속될 수 있습니다(프라이빗으로 선언되지 않은 경우).
예시
<?php class grandpa{ public function __construct(){ echo "I am in Tutorials point"; } } class papa extends grandpa{ } $obj = new papa(); ?>
출력
I am in Tutorials point
설명
여기서 부모 클래스는 자식 클래스에서 우리가 자식 클래스에서 생성자 함수를 선언하지 않았기 때문에 암시적으로 호출됩니다.