다음 코드의 실행 결과는?
다음 코드의 실행 결과는?
<?php
class Fruit {
public $name;
protected function intro() {
echo "This is a fruit";
}
}
class Apple extends Fruit {
public function showInfo() {
$this->intro(); // 라인 A
}
}
$apple = new Apple();
$apple->showInfo(); // 라인 B
$apple->intro(); // 라인 C
?>
정답: B
이 코드는
protected
메서드의 접근 규칙을 보여주는 중요한 예제입니다.단계별 실행 분석:
1. 라인 B (
$apple->showInfo()
) - 정상 실행⦁
showInfo()
는 public
메서드이므로 외부에서 호출 가능2. 라인 A (
$this->intro()
) - 정상 실행⦁
intro()
는 protected
메서드지만 상속받은 클래스 내부에서 호출⦁ Apple 클래스가 Fruit를 상속받았으므로 접근 가능
⦁ "This is a fruit" 출력
3. 라인 C (
$apple->intro()
) - 오류 발생⦁
intro()
는 protected
메서드이므로 클래스 외부에서 직접 호출 불가⦁ Fatal Error 발생
핵심 개념:
⦁
protected
멤버는 상속받은 클래스 내부에서는 접근 가능⦁ 하지만 클래스 외부에서는 직접 접근 불가
💡 학습 팁
이 문제를 포함한 PHP 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.