다음 Java 코드에 대한 알맞는 출력값을 쓰시오.
class Connection {
private static Connection _inst = null;
private int count = 0;
static public Connection get() {
if(_inst == null) {
_inst = new Connection();
return _inst;
}
return _inst;
}
public void count() { count ++; }
public int getCount() { return count; }
}
public class testcon {
public static void main(String[] args) {
Connection conn1 = Connection.get();
conn1.count();
Connection conn2 = Connection.get();
conn2.count();
Connection conn3 = Connection.get();
conn3.count();
System.out.print(conn1.getCount());
}
}
코드 분석
- Connection 클래스:
- Connection 클래스는 싱글턴 패턴을 구현하고 있습니다. 클래스의 인스턴스는 하나만 생성되며, 이를 위해 private static Connection _inst 변수를 사용합니다.
- get() 메소드: 이 메소드는 Connection 클래스의 인스턴스를 반환합니다. 인스턴스가 아직 생성되지 않았다면 새로 생성하고, 이미 존재한다면 기존 인스턴스를 반환합니다.
- count 변수: 이 변수는 count 메소드 호출 횟수를 세기 위한 변수입니다.
- count() 메소드: 이 메소드는 count 변수를 1 증가시킵니다.
- getCount() 메소드: 현재 count의 값을 반환합니다.
- testcon 클래스:
- main 메소드에서 Connection 클래스의 인스턴스를 세 번 가져오고, 각 인스턴스에서 count() 메소드를 호출합니다.
실행 과정
- Connection conn1 = Connection.get();
- conn1에 Connection의 인스턴스를 할당합니다. _inst가 null이므로 새 인스턴스가 생성됩니다.
- conn1.count();
- conn1에서 count() 메소드를 호출하여 count 값을 1로 증가시킵니다.
- Connection conn2 = Connection.get();
- conn2에도 같은 인스턴스가 반환됩니다. _inst는 이미 생성된 인스턴스를 가리키고 있습니다.
- conn2.count();
- conn2에서 count() 메소드를 호출하여 count 값을 2로 증가시킵니다.
- Connection conn3 = Connection.get();
- conn3에도 동일한 인스턴스가 반환됩니다.
- conn3.count();
- conn3에서 count() 메소드를 호출하여 count 값을 3으로 증가시킵니다.
출력값
- 마지막으로 System.out.print(conn1.getCount());가 실행됩니다. conn1이 가리키는 Connection 인스턴스의 count 값은 3입니다.