클래스의 상속
클래스는 extends 키워드를 이용하여 다른 클래스로 부터 속성과 메소드를 상속받을 수 있습니다. 이러한 클래스의 상속(Inheritance) 기능으로 인하여 객체지향 프로그래밍의 장점이 더욱 부각될 수 있습니다.
다음 예제를 통하여 클래스의 상속의 개념과 사용법을 익혀봅시다.
07/ex7-5.php
<?php
class Rectangle {
public $width; // 02
public $height;
public function __construct($width, $height) {
$this->width = $width;
$this->height = $height;
}
public function getArea() {
return ($this->width * $this->height);
}
} // 12
class Square extends Rectangle { // 14
public function isSquare() { // 15
if ($this->width == $this->height) {
return true; // 정사각형인 경우
}
else {
return false; // 직사각형이 아닌 경우
}
} // 22
}
$rect = new Square(10, 10); // 25
if ($rect->isSquare()) // 27
echo "정사각형의 넓이 : ";
else
echo "직사각형의 넓이 : "; // 30
echo $rect->getArea(); // 32
?>

02~12 Rectangle 클래스는 두 개의 속성($width, $height), 생성자, 한 개의 메소드(getArea())로 구성됩니다.
14 Square 클래스는 2~12행에서 정의한 Rectangle 클래스의 모든 자산, 즉 속성, 생성자, 메소드를 상속받습니다.
15~22 Square 클래스는 Rectangle 클래스에서 상속받은 자산에 추가적으로 isSquare() 메소드를 가집니다. isSquare() 메서드는 $this->width와 $this->height가 같은 경우, 즉 정사각형일 경우에는 True, 그렇지 않으면 False 값을 반환합니다.
25 Square(10, 10)을 이용하여 $rect 객체를 생성합니다. 이 때 5~8행의 생성자 함수가 사용됩니다.
27~30 $rect->isSquare() 메서드를 호출하여 반환되는 값이 True이면 '정사각형 넓이 : '를 출력하고, 그렇지 않으면 '직사각형 넓이 : '를 출력합니다.
32 $rect->getArea() 메서드를 호출하여 9~11행의 getArea() 메소드를 실행하여 실행 결과에서와 같이 정사각형(또는 직사각형)의 넓이를 출력합니다.