다음 코드에서 정적 메서드와 인스턴스 메서드의 차이점에 대한 설명으로 올바른 것은?

과목: PHP

문제 번호: 3032

hard
다음 코드에서 정적 메서드와 인스턴스 메서드의 차이점에 대한 설명으로 올바른 것은?
<?php
class FileManager {
    private $filename;
    
    public function __construct($filename) {
        $this->filename = $filename;
    }
    
    public function readFile() {
        return "Reading " . $this->filename;
    }
    
    public static function getFileExtension($filename) {
        return pathinfo($filename, PATHINFO_EXTENSION);
    }
}

$manager = new FileManager("document.pdf");
echo $manager->readFile();
echo FileManager::getFileExtension("image.jpg");
?>
A. 정적 메서드와 인스턴스 메서드는 완전히 동일하게 작동한다
B. 정적 메서드는 객체의 속성에 접근할 수 있지만, 인스턴스 메서드는 불가능하다
C. 정적 메서드는 객체 상태와 무관하게 독립적으로 실행되고, 인스턴스 메서드는 객체의 상태에 의존한다
D. 인스턴스 메서드는 정적 메서드보다 메모리를 더 많이 사용한다

정답: C



정적 메서드와 인스턴스 메서드는 서로 다른 용도와 특성을 가집니다.

인스턴스 메서드 (readFile):

⦁ 객체 의존: 특정 객체의 상태($this->filename)에 의존
⦁ 호출 방식: 객체를 통해 호출 ($manager->readFile())
⦁ 용도: 객체별로 다른 데이터를 처리할 때
$this 사용: 현재 객체의 속성과 메서드에 접근 가능

정적 메서드 (getFileExtension):

⦁ 객체 독립: 객체의 상태와 무관하게 동작
⦁ 호출 방식: 클래스 이름으로 직접 호출 (FileManager::getFileExtension())
⦁ 용도: 유틸리티 함수, 공통 기능 제공
$this 사용 불가: 객체 속성에 접근할 수 없음

실제 활용 사례:

⦁ 정적 메서드: 파일 확장자 추출, 날짜 포맷팅, 암호화 등
⦁ 인스턴스 메서드: 사용자 정보 조회, 주문 처리, 개인화된 작업 등

💡 학습 팁

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