IMG-LOGO
공지사항 :

자바 초기화(Initialization)와 생성자(Constructor)

lmkfox - 2025-07-13 06:17:51 13 Views 0 Comment

1. 초기화(Initialization)란?

초기화란 변수에 처음 값을 설정하는 것입니다. 자바에서는 변수나 필드를 여러 방식으로 초기화할 수 있습니다.

자바 초기화 방식 요약

초기화 방식

설명

예시

명시적 초기화

선언과 동시에 값을 지정

int x = 10;

초기화 블록

중괄호 {}를 사용한 블록에서 초기화

static 또는 인스턴스 초기화 블록

생성자 초기화

생성자 내부에서 변수 초기화

this.value = 100;

기본값 초기화

자바가 자동으로 설정 (필드에 한함)

int → 0, boolean → false 등


2. 생성자(Constructor)란?

생성자는 객체를 생성할 때 자동으로 호출되는 특수한 메소드입니다. 클래스 이름과 동일하며, 반환 타입이 없습니다.

생성자의 특징

  • 클래스 이름과 동일

  • 반환값이 없음 (void도 쓰지 않음)

  • 오직 객체 생성 시(new 키워드 사용 시) 자동 호출

  • 필요에 따라 오버로딩 가능 (여러 개 정의)

기본 생성자

자바 컴파일러는 사용자가 생성자를 정의하지 않으면 자동으로 기본 생성자를 생성합니다.

public class Person {
    String name;

    // 기본 생성자 (명시적으로 작성)
    public Person() {
        name = "홍길동";
    }
}


3. 매개변수가 있는 생성자

public class Person {
    String name;

    public Person(String name) {
        this.name = name; // this는 현재 인스턴스를 가리킴
    }
}

사용 예:

Person p = new Person("이순신");
System.out.println(p.name); // 이순신


4. 생성자 오버로딩

하나의 클래스에 여러 개의 생성자를 정의할 수 있으며, 매개변수의 개수나 타입으로 구분합니다.

public class Car {
    String model;
    int year;

    public Car() {
        this("모델 없음", 0);
    }

    public Car(String model) {
        this(model, 0);
    }

    public Car(String model, int year) {
        this.model = model;
        this.year = year;
    }
}


5. this() 생성자 호출

하나의 생성자에서 같은 클래스 내의 다른 생성자를 호출할 때 this()를 사용합니다.

public class Book {
    String title;
    int price;

    public Book() {
        this("제목 없음", 0);
    }

    public Book(String title, int price) {
        this.title = title;
        this.price = price;
    }
}


6. 초기화 블록

인스턴스 초기화 블록

객체가 생성될 때마다 실행됩니다. 생성자보다 먼저 실행됩니다.

public class Example {
    int number;

    {
        number = 100; // 인스턴스 초기화 블록
    }

    public Example() {
        System.out.println("생성자 호출됨");
    }
}

static 초기화 블록

클래스가 메모리에 최초 로딩될 때 단 한 번 실행됩니다.

public class StaticExample {
    static int staticVar;

    static {
        staticVar = 500;
        System.out.println("static 초기화 블록 실행");
    }
}


7. 생성자와 초기화 순서

객체가 생성될 때 실행 순서는 다음과 같습니다:

  1. 필드의 명시적 초기화

  2. 인스턴스 초기화 블록

  3. 생성자


8. 정리

개념

설명

명시적 초기화

변수 선언과 동시에 초기값 지정

초기화 블록

생성자 호출 전 실행되는 초기화 영역

생성자(Constructor)

객체 생성 시 호출, 클래스 이름과 동일, 반환형 없음

this 키워드

인스턴스 자신을 가리킴

this()

다른 생성자를 호출할 때 사용

생성자 오버로딩

다양한 인자를 받는 여러 생성자 정의 가능


9. 예제 코드 종합

public class Student {
    String name;
    int grade;

    // 인스턴스 초기화 블록
    {
        grade = 1;
    }

    // 생성자 1
    public Student() {
        this("이름 없음");
    }

    // 생성자 2
    public Student(String name) {
        this.name = name;
    }

    void printInfo() {
        System.out.println("이름: " + name + ", 학년: " + grade);
    }

    public static void main(String[] args) {
        Student s = new Student("김영희");
        s.printInfo(); // 이름: 김영희, 학년: 1
    }
}

댓글