다음 코드에서 자식 클래스의 메서드 시그니처가 올바른 것은?

과목: PHP

문제 번호: 3018

hard
다음 코드에서 자식 클래스의 메서드 시그니처가 올바른 것은?
<?php
abstract class DataProcessor {
    abstract protected function processData($data, $format);
}

class JSONProcessor extends DataProcessor {
    // 어떤 메서드 시그니처가 올바를까요?
}
?>
A. private function processData($data, $format)
B. protected function processData($data)
C. public function processData($data, $format, $options = [])
D. protected function processData($newData, $newFormat)

정답: C



추상 메서드를 구현할 때는 특정 규칙을 따라야 하며, 3번이 유일하게 모든 조건을 만족합니다.

추상 메서드 구현 규칙:

1. 접근 제한자: 같거나 더 개방적이어야 함
⦁ 부모: protected → 자식: protected 또는 public

2. 필수 매개변수: 개수와 순서가 동일해야 함
⦁ 부모: $data, $format → 자식: 동일한 2개 필수

3. 선택적 매개변수: 추가 가능
⦁ 자식에서 $options = [] 같은 기본값 매개변수 추가 허용

올바른 구현:
public function processData($data, $format, $options = []) {
    // 구현 코드
}

💡 학습 팁

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