자바에서 메서드는 특정 동작을 수행하는 코드 블록을 저장하는 데 사용됩니다. 메서드를 다루다 보면 생성자(constructor)라는 개념을 접하게 되는데, 이는 자바 프로그래밍에서 매우 중요한 역할을 합니다.
생성자는 자바에서 객체를 초기화하는 데 사용되는 특별한 메서드입니다. 클래스의 객체가 생성되는 시점에 자동으로 호출되며, 객체의 속성에 초기값을 설정하는 용도로 활용됩니다.
이 글에서는 예제와 함께 자바 생성자의 기본 개념과 실제 코드에서 생성자를 활용하는 방법을 살펴봅니다. 글을 끝까지 읽고 나면 객체 초기화를 위해 자바 생성자를 능숙하게 사용할 수 있게 될 것입니다.
자바 생성자란?
생성자는 새로 생성된 객체가 프로그램에서 사용되기 전에 초기화하는 역할을 합니다. 예를 들어 Supplier라는 이름의 생성자는 공급업체(supplier)의 기본 속성값을 가진 객체를 만들어 줍니다.
생성자는 자신이 속한 클래스와 같은 이름을 가져야 하며, 어떤 값도 반환하지 않습니다. 다음은 자바에서 생성자를 선언한 간단한 예입니다.
class Supplier {
Supplier() {
// 여기에 코드 작성
}
}
위 예제에서는 클래스와 같은 이름을 가진 Supplier 생성자를 선언했습니다. 또한 이 생성자에는 void 같은 반환 타입이 없는데, 바로这一点이 생성자를 일반 메서드와 구분 짓는 핵심 특징입니다.
생성자를 선언할 때 반드시 알아야 할 두 가지 규칙이 있습니다. 첫째, 생성자의 이름은 해당 생성자가 선언된 클래스의 이름과 정확히 일치해야 합니다. 둘째, 생성자는 값을 반환할 수 없습니다.
자바 생성자 만드는 방법
자바 생성자에는 두 가지 종류가 있습니다. 바로 인자 없는 생성자(no-arg constructor)와 매개변수가 있는 생성자(parameterized constructor)입니다. 지금부터 각 유형별로 생성자를 만드는 방법을 자세히 알아보겠습니다.
인자 없는 생성자(No-arg Constructor)
식료품 가게를 운영하고 있다고 가정해 봅시다. 치즈 주요 공급업체의 정보를 저장하는 프로그램을 만들고 싶은데, 이 프로그램에는 공급업체 정보를 저장하는 생성자가 포함되어야 하고, 저장된 값들을 콘솔에 출력하는 기능도 필요합니다.
이 프로그램을 만들 때 사용할 수 있는 코드는 다음과 같습니다.
class MainCheeseSupplier {
private String name;
private String address;
private int discountRate;
private String payDate;
private MainCheeseSupplier() {
name = "J. Acker Dairy";
address = "1600 Johnson Ave. San Francisco 94127";
discountRate = 2;
payDate = "Last day of the month.";
}
public static void main(String[] args) {
MainCheeseSupplier jadairy = new MainCheeseSupplier();
System.out.println("Name: " + jadairy.name);
System.out.println("Address: " + jadairy.address);
System.out.println("Discount rate: " + jadairy.discountRate);
System.out.println("Pay date: " + jadairy.payDate);
}
}
이 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Name: J. Acker Dairy Address: 1600 Johnson Ave. San Francisco 94127 Discount rate: 2 Pay date: Last day of the month.
먼저 프로그램의 코드를 담고 있는 MainCheeseSupplier라는 클래스를 정의했습니다. 그다음 주요 치즈 공급업체의 정보를 저장하기 위한 네 개의 private 변수인 name, address, discountRate, payDate를 선언했습니다.
변수들을 선언한 후에는 이 변수들을 기본값으로 초기화하는 MainCheeseSupplier 생성자를 만듭니다. 그런 다음 메인 프로그램에서 다음 코드를 사용해 생성자의 인스턴스를 초기화합니다.
MainCheeseSupplier jadairy = new MainCheeseSupplier();
이 코드는 MainCheeseSupplier 객체의 새로운 인스턴스를 변수 jadairy에 할당합니다. 이후 jadairy 변수와 접근하려는 속성을 참조하여 저장된 각 값을 콘솔에 출력합니다.
이것이 바로 인자 없는 생성자의 예입니다. 생성자가 어떤 매개변수도 받지 않기 때문에 'no-arg(인자 없음)'라고 부르는 것입니다.
매개변수가 있는 생성자(Parameterized Constructor)
그러나 경우에 따라서는 생성자를 통해 인자(argument)를 전달하고 싶을 수도 있습니다.
다시 식료품 가게 예로 돌아가 봅시다. 이번에는 주요 치즈 공급업체의 세부 정보 값을 메인 프로그램에서 직접 정의하고, 메인 프로그램이 실행을 시작할 때 그 값들을 생성자에 전달하려고 합니다.
이렇게 하는 이유는 서로 다른 값으로 여러 공급업체를 초기화해야 하거나, 생성자 안에 특정 값을 고정해서 넣고 싶지 않기 때문일 수 있습니다.
생성자를 통해 인자를 전달하는 경우, 이를 매개변수가 있는 생성자(parameterized constructor)라고 부릅니다.
생성자에 매개변수 목록을 전달하는 방법은 다음과 같습니다.
class MainCheeseSupplier {
String name;
String address;
int discountRate;
String payDate;
public MainCheeseSupplier(String supplierName, String supplierAddress, int supplierDiscountRate, String supplierPayDate) {
name = supplierName;
address = supplierAddress;
discountRate = supplierDiscountRate;
payDate = supplierPayDate;
}
public static void main(String[] args) {
MainCheeseSupplier jadairy = new MainCheeseSupplier("J. Acker Dairy", "1600 Johnson Ave. San Francisco 94127", 2, "Last day of the month.");
System.out.println("Name: " + jadairy.name);
System.out.println("Address: " + jadairy.address);
System.out.println("Discount rate: " + jadairy.discountRate);
System.out.println("Pay date: " + jadairy.payDate);
}
}
이 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Name: J. Acker Dairy Address: 1600 Johnson Ave. San Francisco 94127 Discount rate: 2 Pay date: Last day of the month.
보시다시피 이 예제의 출력 결과는 첫 번째 예제와 동일합니다. 하지만 코드에는 한 가지 큰 차이점이 있습니다. 생성자 내부에서 직접 값을 초기화하는 대신, 생성자의 인스턴스를 선언하는 시점에 값을 매개변수로 전달한다는 점입니다.
위 예제에서 MainCheeseSupplier 생성자는 supplierName, supplierAddress, supplierDiscountRate, supplierPayDate라는 네 개의 매개변수를 받습니다. 생성자의 인스턴스를 초기화할 때 이 매개변수들을 통해 값을 전달하면, 생성자가 그 값들을 읽어 들여 객체의 속성에 저장합니다. 생성자 인스턴스를 초기화하는 코드는 다음과 같습니다.
MainCheeseSupplier jadairy = new MainCheeseSupplier("J. Acker Dairy", "1600 Johnson Ave. San Francisco 94127", 2, "Last day of the month.");
그런 다음 MainCheeseSupplier 생성자에 저장된 값들의 내용을 출력합니다.
마무리
자바 생성자는 객체를 초기화하는 데 사용되는 특별한 메서드입니다. 생성자는 클래스의 객체가 생성될 때 호출되며, 객체 속성의 초기값을 설정하는 데 활용할 수 있습니다.
이 글에서는 예제를 통해 자바에서 생성자를 만들고 활용하는 방법을 살펴보았습니다. 이제 여러분도 전문가처럼 자바 생성자를 사용해 객체를 초기화할 준비가 되었습니다!