ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 초기화 블럭 (initialization block)
    IT/JAVA 2023. 1. 29. 22:38
    반응형

    개발하면서 익숙함에 속아 기본을 잊어버리곤 한다.

    중요하게 생각하지 않았던 초기화 블럭에 대해서 정리한다.

     


    초기화 블럭

    1. 클래스 초기화 블럭
      - 클래스 변수의 복잡한 초기화에 사용된다.
      - 인스턴스 초기화 블럭 앞에 단순히 static을 덧붙이기만 하면 된다.

    2. 인스턴스 초기화 블럭
      - 인스턴스변수의 복잡한 초기화에 사용된다.
      - 단순히 크래스 내에 블럭 {} 만들고 그 안에 코드를 작성하기만 하면 된다.

     

    ** 초기화 블럭 내에는 메서드 내에서와 같이 조건문, 반복문, 예외처리구문 등 자유롭게 사용하 수 있으므로, 초기화 작업이 복잡하여 명시적 초기화만으로 부족한 경우 초기화 블럭을 사용한다.

     

    class Block {
        static {
    		System.out.println("static {}"); // 클래스 초기화 블럭
    	}
        
        {
        	System.out.println("{}"); 		// 인스턴스 초기화 블럭
        }
        
        public Block() {
        	System.out.println("생성자");		// 생성자
        }
    }

     


    클래스 초기화 블럭과 인스턴스 블럭의  특징

    - 클래스 초기화 블럭은 클래스가 메모리에 처음 로딩될 때 한번만 수행된다.
    - 인스턴스 초기화 블럭은 생성자와 같이 인스턴스를 생성할 때 마다 수행된다.

    ** 생성자 보다 인스턴스 초기화 블럭이 먼저 수행된다는 사실을 기억하자.


    정리

    인스턴스변수의 초기화는 주로 생성자를 사용하기 때문에, 인스턴스 초기화 블럭은 잘 사용되지 않는다.

    대신 클래스의 모든 생성자에서 공통적으로 수행되어져야 하는 코드가 있는 경우에 생성자에 넣지 않고 인스턴스 초기화 블럭에 넣어 두면 코드의 중복을 줄일 수 있어서 좋다.

     

    중복을 제거하는 것은 코드의 신뢰성을 높여 주고, 오류의 발생 가능성을 줄여 준다는 장점이 있다.

    즉, 재사용성을 높이고 중복을 제거하는 것, 이것이 바로 객체지향 프로그래밍이 추구하는 궁극적인 목표이다.

     

    기본기를 잊지 말자.

     

     

     

    반응형

    댓글

Designed by black7375.