JAVA

[JAVA] 초기화 순서

집한구석 2021. 5. 12. 22:04
728x90

초기화순서

  • static block -> 인스턴스 block -> 생성자

예제코드

public class Book {

  static {
    System.out.println("책 static 블록");
  }

  public Book() {
    System.out.println("책 생성자");
  }
  
  {
    System.out.println("책 인스턴스 블록");  
  }
}
public class JavaBook extends Book {

  static {
    System.out.println("JAVA 책 static 블록");
  }

  public JavaBook() {
    System.out.println("JAVA 책 생성자 블록");
  }

  {
    System.out.println("JAVA 책 인스턴스 블록");
  }
}

결과

public class Main {

  public static void main(String[] args) {
    System.out.println("책을 이용하여 초기화 순서를 확인해보자.");
    Book book = new Book();
  }
  /*
  1. 책 static 블록
  2. 책 인스턴스 블록
  3. 책 생성자
  */
}

public class Main {

  public static void main(String[] args) {
    System.out.println("책을 이용하여 초기화 순서를 확인해보자.");
    Book book1 = new Book();
    Book book2 = new Book();
  }
  /*
  1. 책 static 블록
  2. 책 인스턴스 블록
  3. 책 생성자
  4. 책 인스턴스 블록
  5. 책 생성자
  static 블록은 한번만 호출됨
  */
}

public class Main {

  public static void main(String[] args) {
    System.out.println("책을 이용하여 초기화 순서를 확인해보자.");
    Book book1 = new Book();
    Book book2 = new Book();
  }
  /*
  1. 책 static 블록
  2. 책 인스턴스 블록
  3. 책 생성자
  4. 책 인스턴스 블록
  5. 책 생성자
  static 블록은 한번만 호출됨
  */
}

public class Main {

  public static void main(String[] args) {
    System.out.println("책을 이용하여 초기화 순서를 확인해보자.");
    JavaBook javaBook = new JavaBook();
  }
  /*
  1. 책 static 블록
  2. JAVA 책 static 블록
  3. 책 인스턴스 블록
  4. 책 생성자
  5. JAVA 책 인스턴스 블록
  6. JAVA 책 생성자 블록
  부모 클래스인 책 static 선언 이후 자식 클래스 static 블록이 선언된다.
  */
}

 

'JAVA' 카테고리의 다른 글

[JAVA] 상태패턴  (0) 2021.05.21
[JAVA] Builder 패턴  (0) 2021.05.16
[JAVA] 상속 / 컴포지션  (0) 2021.05.15
[JAVA] static 정리  (0) 2021.05.15
[JAVA] Lombok @Delegate  (0) 2021.04.18