초기화 블록, 정적 팩토리 메서드

2001 단어 CSJavaOOPCS

초기화 블록(Initialization block)

클래스 초기화 블록

클래스 변수의 복잡한 초기화에 사용되며 클래스가 처음 로딩될 때 한번만 수행된다.

class A {
	static {}
}

인스턴스 초기화 블록

  • 인스턴스 변수의 복잡한 초기화에 사용되며 인스터스가 생성될 때마다 수행된다.
  • 생성자보다 먼저 수행된다.
class B {
	{}
}

정적 팩토리 메서드

정적 팩토리 메서드가 무엇인지 간단히 알아보도록 하겠다.

정적 팩토리 메서드란?

객체 생성의 역할을 하는 클래스 메서드이다.

생성자와 차이는 무엇인가?

이름을 가질 수 있다.

생성자와 다르게 이름을 가질 수 있기 때문에 객체 생성의 목적을 표현할 수 있다.

매번 새로운 객체를 생성할 필요가 없다.

인스턴스를 미리 만들어 놓거나 새로 생성한 인스턴스를 캐싱하여 재활용하는 식으로 불필요한 객체 생성을 피할 수 있다.

하위 자료형 객체를 반환할 수 있다.

// Basic, Intermediate, Advanced는 Level을 상속한다.

public class Level {
  public static Level of(int score) {
    if (score < 50) {
      return new Basic();
    } else if (score < 80) {
      return new Intermediate();
    } else {
      return new Advanced();
    }
  }
}

객체 생성을 캡슐화할 수 있다.

아래와 같이 생성자 내부를 드러내지 않고 다른 객체로 변형할 수 있다.

public class CarDto {
  private String name;
  private int position;

  pulbic static CarDto from(Car car) {
    return new CarDto(car.getName(), car.getPosition());
  }
}


// Car -> CatDto 로 변환
CarDto carDto = CarDto.from(car);

자료 출처

좋은 웹페이지 즐겨찾기