다음 코드의 실행 결과는?
다음 코드의 실행 결과는?
<?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
이 코드는 정적 메서드의 상속과 다양한 호출 방법을 보여줍니다.
실행 순서:
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 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.