PHP에서의 instanceof 연산자와 OOP 상속
instanceof 연산자를 사용할 때의 상속 특징에 대해 알아보겠습니다. 부모 클래스와 자식 클래스가 있다고 가정해 봅시다:
<?php
// 부모 클래스:
class ParentClass
{
}
// 자식 클래스:
class ChildClass extends ParentClass
{
}
?>
자식 클래스의 객체를 생성해 보겠습니다:
<?php
$obj = new ChildClass;
?>
이제 instanceof를 사용하여 우리의 객체가 ParentClass 클래스와 ChildClass 클래스에 속하는지 확인해 보겠습니다:
<?php
var_dump($obj instanceof ChildClass); // true 출력
var_dump($obj instanceof ParentClass); // 또한 true 출력
?>
예제에서 보시다시피 - instanceof 연산자는 부모 클래스와 자식 클래스를 확인할 때 차이를 두지 않습니다.
혼동하지 마세요 - 객체가 실제로 부모 클래스의 것이라면, 당연히 자식 클래스에 속하는지 확인하는 것은 false를 반환할 것입니다:
<?php
$obj = new ParentClass; // 부모 클래스의 객체
var_dump($obj instanceof ParentClass); // true 출력
var_dump($obj instanceof ChildClass); // false 출력
?>
공개 속성 name과 surname을 가진 User 클래스를 만드세요.
User 클래스를 상속받고 salary 속성을 추가하는 Employee 클래스를 만드세요.
공개 속성 name과 population을 가진 City 클래스를 만드세요.
User 클래스의 객체 3개, Employee 클래스의 객체 3개, City 클래스의 객체 3개를 생성하고, 임의의 순서로 $arr 배열에 기록하세요.
$arr 배열을 반복문으로 순회하고 User 클래스 또는 이 클래스의 하위 클래스에 속하는 객체들의 name 속성을 화면에 열로 출력하세요.
$arr 배열을 반복문으로 순회하고 User 클래스 또는 이 클래스의 하위 클래스에 속하지 않는 객체들의 name 속성을 화면에 열로 출력하세요.
$arr 배열을 반복문으로 순회하고 정확히 User 클래스에 속하는, 즉 City 클래스나 Employee 클래스가 아닌 객체들의 name 속성을 화면에 열로 출력하세요.