다음 코드에서 객체의 속성값을 변경하는 두 가지 방법이 사용되었습니다. 이에 대한 설명으로

과목: PHP

문제 번호: 2989

hard
다음 코드에서 객체의 속성값을 변경하는 두 가지 방법이 사용되었습니다. 이에 대한 설명으로 올바른 것은?
<?php
class Fruit {
    public $name;
    
    function set_name($name) {
        $this->name = $name;
    }
}

$apple = new Fruit();
// 방법 1
$apple->set_name("Apple");
// 방법 2  
$apple->name = "Red Apple";

echo $apple->name;
?>
A. 방법 1만 올바른 접근 방식이다
B. 방법 2만 올바른 접근 방식이다
C. 둘 다 올바르며 같은 결과를 낸다
D. 둘 다 올바르지만 최종 출력은 "Red Apple"이다

정답: D



PHP에서는 public 속성에 대해 두 가지 방법 모두 유효하며, 최종 출력은 "Red Apple"입니다.

⦁ 방법 1 (메서드 사용): $apple->set_name("Apple")
⦁ 클래스 내부의 set_name 메서드를 호출
$this->name을 통해 객체의 name 속성을 "Apple"로 설정

⦁ 방법 2 (직접 접근): $apple->name = "Red Apple"
⦁ 객체의 public 속성에 직접 접근하여 값 변경
⦁ 이전 값 "Apple"을 "Red Apple"로 덮어씀

두 방법 모두 실행되지만, 방법 2가 나중에 실행되어 최종값은 "Red Apple"이 됩니다. 실제 개발에서는 메서드를 통한 접근(방법 1)이 캡슐화 원칙에 더 적합합니다.

💡 학습 팁

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