다음 코드에서 키워드의 효과는?
다음 코드에서
final
키워드의 효과는?<?php
class Fruit {
final public function intro() {
echo "This is a fruit method";
}
}
class Apple extends Fruit {
public function intro() { // 이 라인의 결과는?
echo "This is an apple method";
}
public function showInfo() {
echo "Apple info";
}
}
$apple = new Apple();
?>
정답: B
final
키워드는 상속과 오버라이딩을 제한하는 중요한 기능을 제공합니다.final
키워드의 두 가지 사용법:1. 메서드에 사용 (
final public function intro()
)⦁ 해당 메서드의 오버라이딩을 금지
⦁ 상속은 가능하지만 해당 메서드는 재정의할 수 없음
⦁ 오버라이딩 시도 시 Fatal Error 발생
2. 클래스에 사용 (
final class ClassName
)⦁ 해당 클래스의 상속 자체를 금지
⦁ 다른 클래스가 이 클래스를 extends할 수 없음
이 코드의 문제점:
⦁ Fruit 클래스의
intro()
메서드가 final
로 선언됨⦁ Apple 클래스에서 동일한 이름의 메서드를 정의하려고 시도
⦁ PHP는 이를 오버라이딩 시도로 간주하여 Fatal Error 발생
올바른 해결책:
Apple 클래스에서는
intro()
메서드를 재정의하지 말고, 다른 이름의 메서드를 사용하거나 부모의 메서드를 그대로 사용해야 합니다.
💡 학습 팁
이 문제를 포함한 PHP 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.