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