다음 코드의 실행 결과는?

과목: PHP

문제 번호: 3031

medium
다음 코드의 실행 결과는?
<?php
class Calculator {
    public static function multiply($a, $b) {
        return $a * $b;
    }
    
    public function __construct() {
        echo self::multiply(4, 5);
    }
}

class AdvancedCalculator extends Calculator {
    public function compute() {
        return parent::multiply(3, 7);
    }
}

$calc = new AdvancedCalculator();
echo " " . $calc->compute();
?>
A. 20 21
B. 21 20
C. 20 만 출력
D. 오류 발생

정답: A



이 코드는 정적 메서드의 상속과 다양한 호출 방법을 보여줍니다.

실행 순서:

1. new AdvancedCalculator() 생성
⦁ AdvancedCalculator는 Calculator를 상속
⦁ 부모의 생성자 __construct() 자동 호출

2. 생성자에서 self::multiply(4, 5) 실행
self::로 현재 클래스의 정적 메서드 호출
4 * 5 = 20 계산 후 출력

3. $calc->compute() 호출
parent::multiply(3, 7) 실행
⦁ 부모 클래스 Calculator의 multiply 메서드 호출
3 * 7 = 21 반환

4. 최종 출력
⦁ 첫 번째: "20" (생성자에서)
⦁ 공백: " "
⦁ 두 번째: "21" (compute 메서드 반환값)

정적 메서드의 상속:
⦁ 자식 클래스에서 부모의 정적 메서드를 자동으로 상속받음
parent::로 명시적으로 부모의 정적 메서드 호출 가능

💡 학습 팁

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