자바의정석

[자바의정석] 초기화 블럭(initialization block)

유호야 2021. 6. 25. 17:59
반응형

클래스 초기화 블럭 클래스변수의 복잡한 초기화에 사용된다.

인스턴스 초기화 블럭 인스턴스변수의 복잡한 초기화에 사용된다.

초기화블럭은 생성자 보다 먼저 실행되기 때문에
모든 생성자에 공통으로 수행되어야 하는 문장들이 있을 때
중복을 제거하기 위해서 인스턴스 초기화 블럭에 넣어주면, 중복을 줄이면서 코드가 간결해질 수 있다.

{
	count++;
    serialNo = count;
}

Car() {
	color = "White";
    gearType = "Auto";
}

Car(String color, String gearType){
	this.color = color;
    this.gearType = gearType;
}

중복을 제거하는 것이 코드의 신뢰성을 높이고 오류 발생가능성을 줄여주기 때문에, 재사용성을 높이고 중복을 제거하는 객체지향프로그래밍이 추구하는 궁극적인 목표에 가까워질 수 있다.

public class BlockTest {
	
	static {
		System.out.println("static {} 실행");
	}
	
	{
		System.out.println("{} 실행");
	}
	
	public BlockTest() {
		System.out.println("생성자 실행");
	}
	
	public static void main(String[] args) {
		
		BlockTest b1 = new BlockTest();
		
		BlockTest b2 = new BlockTest();
		
	}

}

 

static {} 실행
{} 실행
생성자 실행
{} 실행
생성자 실행

실행결과를 보면 알 수 있듯이, 클래스 초기화 블럭이 가장 먼저 한 번만 실행이 되고, 인스턴스 초기화 블럭은 인스턴스가 생성될 때마다 실행이 된다.

 

반응형