모두CBT

21-3아래 Java 프로그램을 실행했을 때 출력되는 내용을 적으시오.… | 2021년 정보처리기사실기 3회차 기출문제 상세 페이지

17

21-3

아래 Java 프로그램을 실행했을 때 출력되는 내용을 적으시오.

class Counter {
    private static Counter only;
    private int total = 10;
    private Counter() { }
    public static Counter open() {
        if (only == null)
            only = new Counter();
        return only;
    }
    public void add(int v) { total += v; }
    public int value() { return total; }
}

public class Main {
    public static void main(String[] args) {
        Counter x = Counter.open();
        x.add(5);
        Counter y = Counter.open();
        y.add(7);
        Counter z = Counter.open();
        z.add(-2);
        System.out.println(x.value() + " " + (x == z));
    }
}
해설

20 true


[해설]

Counter는 생성자가 private이고 open()이 처음 한 번만 객체를 만든다. 이렇게 인스턴스를 하나로 제한하는 구조가 싱글톤(Singleton) 패턴이다.

  • x = open(): 새 객체 생성, total = 10 → add(5) → 15
  • y = open(): 이미 있는 객체 반환 → add(7) → 22
  • z = open(): 같은 객체 → add(-2) → 20

x, y, z는 모두 한 객체를 가리키므로 x.value()는 20이고, 참조 비교 x == z도 true다. 출력은 20 true다.

내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.