다음 코드의 실행 결과는?

과목: PHP

문제 번호: 3017

medium
다음 코드의 실행 결과는?
<?php
abstract class Shape {
    abstract public function calculateArea();
}

class Circle extends Shape {
    private $radius;
    
    public function __construct($radius) {
        $this->radius = $radius;
    }
    
    public function calculateArea() {
        return 3.14 * $this->radius * $this->radius;
    }
}

$shape = new Shape(); // 이 라인의 결과는?
$circle = new Circle(5);
echo $circle->calculateArea();
?>
A. 78.5 출력
B. 오류 없이 0 출력
C. Fatal Error 발생 (추상 클래스 직접 인스턴스화 시도)
D. Circle 객체만 생성되고 나머지는 무시됨

정답: C



추상 클래스는 직접 객체를 생성할 수 없으므로 Fatal Error가 발생합니다.

오류 발생 지점:
$shape = new Shape(); - 추상 클래스 직접 인스턴스화 시도
⦁ 오류 메시지: "Cannot instantiate abstract class Shape"
⦁ 실행 중단: 이 라인에서 스크립트가 중단되므로 이후 코드는 실행되지 않음

추상 클래스의 제약사항:
⦁ 직접 객체 생성 불가
⦁ 반드시 자식 클래스를 통해서만 사용 가능
⦁ 자식 클래스에서 모든 추상 메서드를 구현해야 함

올바른 사용법:
// $shape = new Shape(); // 이 라인 제거
$circle = new Circle(5); // 이것만 가능
echo $circle->calculateArea(); // 78.5 출력

💡 학습 팁

이 문제를 포함한 PHP 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.