카테고리 없음

[JAVA] 213 - 1

codecodekode 2024. 10. 19. 11:53

다음 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());
  }
}

코드 분석

  1. Connection 클래스:
    • Connection 클래스는 싱글턴 패턴을 구현하고 있습니다. 클래스의 인스턴스는 하나만 생성되며, 이를 위해 private static Connection _inst 변수를 사용합니다.
    • get() 메소드: 이 메소드는 Connection 클래스의 인스턴스를 반환합니다. 인스턴스가 아직 생성되지 않았다면 새로 생성하고, 이미 존재한다면 기존 인스턴스를 반환합니다.
    • count 변수: 이 변수는 count 메소드 호출 횟수를 세기 위한 변수입니다.
    • count() 메소드: 이 메소드는 count 변수를 1 증가시킵니다.
    • getCount() 메소드: 현재 count의 값을 반환합니다.
  2. 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입니다.