본문 바로가기

JAVA

자바에서 사용하는 생성자(Constructor)에 대해 알아보기

생성자의 정의

자바의 객체 지향 프로그래밍에서, 생성자는 객체가 생성될 때 자동으로 호출되는 특수한 메서드입니다.

이 메서드는 객체의 필드를 초기화하고, 객체가 정상적으로 작동할 수 있도록 준비하는 중요한 역할을 수행합니다.

 

생성자의 목적

  • 객체 초기화: 생성자는 객체가 생성될 때 필드를 초기화하는 역할을 합니다. 이는 각 객체가 고유한 상태를 가질 수 있도록 해줍니다.
  • 다양한 초기값 설정: 클래스 설계상에 초기값을 설정하지 않으면 모든 객체가 동일한 데이터를 갖게 될 위험이 있습니다. 생성자는 객체 생성 시점부터 원하는 초기값을 설정할 수 있도록 합니다.

 

생성자의 특징

이름과 리턴 타입

  • 생성자의 이름은 클래스의 이름과 동일해야 합니다.
  • 생성자는 리턴 타입이 없으며, void를 사용하지 않습니다.

 

자동 호출

  • 객체가 생성될 때 new 연산자와 함께 자동으로 호출됩니다.

 

기본 생성자

  • 사용자가 생성자를 선언하지 않으면, 컴파일러가 기본 생성자를 자동으로 제공합니다. 그러나 사용자가 하나 이상의 생성자를 선언하면, 컴파일러는 기본 생성자를 제공하지 않습니다.

 

오버로딩

  • 생성자는 매개변수를 다르게 하여 여러 개를 작성할 수 있습니다. 이로 인해 다양한 방법으로 객체를 초기화할 수 있습니다.

 

 

생성자의 종류

기본 생성자 (Default Constructor)

  • 매개변수가 없는 생성자로, 특별한 데이터를 초기화하지 않을 경우 사용합니다. 사용자가 생성자를 선언하지 않으면 자동으로 제공됩니다.

 

매개변수가 있는 생성자 (Parameterized Constructor)

  • 객체를 생성함과 동시에 특정 값으로 초기화하고 싶을 때 사용합니다. 외부에서 전달받은 값을 통해 필드를 초기화합니다.

 

복사 생성자 (Copy Constructor)

  • 다른 객체의 상태를 복사하여 새 객체를 초기화할 때 사용합니다. 이는 객체를 복사할 때 유용합니다.

 

예제: Book 클래스

 

public class Book {
    private String title;
    private String author;
    private int pages;

    // 기본 생성자
    public Book() {
        this.title = "Unknown";
        this.author = "Unknown";
        this.pages = 0;
    }

    // 매개변수가 있는 생성자
    public Book(String title, String author, int pages) {
        this.title = title;
        this.author = author;
        this.pages = pages;
    }
}

 

 

객체 생성 및 사용

 

public class HelloWorld {
    public static void main(String[] args) {
        Book myBook1 = new Book(); // 기본 생성자 호출
        Book myBook2 = new Book("titleA", "authorB", 12); // 매개변수가 있는 생성자 호출
    }
}

 

 

생성자와 다른 메서드의 차이

  • 호출 시점: 생성자는 객체 생성 시 딱 한 번만 호출되며, setter 메서드는 객체 생성 이후에 언제든지 호출할 수 있습니다.
  • 역할: 생성자는 객체의 필드를 초기화하는 역할을 수행하고, setter 메서드는 기존 값을 덮어쓰거나 변경하는 역할을 수행합니다.

 

추가적인 고려사항

  • private 생성자: 외부에서 객체를 생성하는 과정을 통제하는 수단으로 사용됩니다. 예를 들어, Math 클래스는 private 생성자를 사용하여 외부에서 객체를 생성하지 못하도록 합니다.
  • this와 this(): 생성자에서 다른 생성자를 호출할 때 사용됩니다. 예를 들어, 기본 생성자가 다른 생성자를 호출하여 초기화를 간소화할 수 있습니다.

 

이와 같이, 자바의 생성자는 객체의 초기화와 다양한 초기값 설정을 위한 중요한 역할을 합니다.

올바르게 이해하고 사용하는 것은 객체 지향 프로그래밍에서 매우 중요합니다.