생성자란 무엇인가?
생성자(Constructor)는 객체를 생성할 때 호출되는 특별한 메서드입니다. 생성자는 주로 객체의 초기화를 담당하며, 클래스와 동일한 이름을 가지고 있습니다. 이 글에서는 생성자의 개념과 자바(Java)에서 생성자를 다루는 방법을 예시와 함께 살펴보겠습니다.
생성자(Constructor)란?
생성자는 객체가 생성될 때 자동으로 호출되는 메서드로, 다음과 같은 특징을 가지고 있습니다:
- 클래스 이름과 동일: 생성자의 이름은 반드시 클래스 이름과 같아야 합니다.
- 반환형이 없음: 반환값을 가지지 않으며 반환형을 명시하지 않습니다.
- 객체 초기화: 객체 생성 시 필드를 초기화하거나 특정 로직을 수행할 수 있습니다.
기본 생성자(Default Constructor)
기본 생성자는 매개변수가 없는 생성자를 말합니다. 클래스에 생성자를 명시적으로 작성하지 않으면 컴파일러가 자동으로 기본 생성자를 추가합니다. 하지만, 다른 생성자를 정의하면 기본 생성자가 자동으로 생성되지 않으므로 필요할 경우 명시적으로 작성해야 합니다.
public class Person {
String name;
int age;
// 기본 생성자
public Person() {
name = "미정";
age = 0;
System.out.println("기본 생성자가 호출되었습니다.");
}
}
public class Main {
public static void main(String[] args) {
Person person = new Person(); // 기본 생성자 호출
System.out.println("이름: " + person.name + ", 나이: " + person.age);
}
}
출력 결과:
매개변수가 있는 생성자 (Parameterized Constructor)
매개변수가 있는 생성자는 객체를 생성할 때 필요한 값을 전달받아 필드를 초기화합니다.
public class Person {
String name;
int age;
// 매개변수가 있는 생성자
public Person(String name, int age) {
this.name = name;
this.age = age;
System.out.println("매개변수가 있는 생성자가 호출되었습니다.");
}
}
public class Main {
public static void main(String[] args) {
Person person = new Person("홍길동", 25); // 매개변수가 있는 생성자 호출
System.out.println("이름: " + person.name + ", 나이: " + person.age);
}
}
출력 결과:
생성자 오버로딩(Constructor Overloading)
클래스에서 여러 개의 생성자를 정의하여 다양한 방법으로 객체를 생성할 수 있습니다. 이를 생성자 오버로딩이라 합니다.
public class Person {
String name;
int age;
// 기본 생성자
public Person() {
this.name = "미정";
this.age = 0;
}
// 매개변수가 있는 생성자
public Person(String name) {
this.name = name;
this.age = 0;
}
// 매개변수가 두 개인 생성자
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
public class Main {
public static void main(String[] args) {
Person person1 = new Person();
Person person2 = new Person("홍길동");
Person person3 = new Person("이순신", 30);
System.out.println("person1 - 이름: " + person1.name + ", 나이: " + person1.age);
System.out.println("person2 - 이름: " + person2.name + ", 나이: " + person2.age);
System.out.println("person3 - 이름: " + person3.name + ", 나이: " + person3.age);
}
}
출력 결과:
this()
를 사용한 생성자 호출
생성자 내부에서 this()
를 사용하면 같은 클래스의 다른 생성자를 호출할 수 있습니다. 이를 통해 코드의 중복을 줄일 수 있습니다.
public class Person {
String name;
int age;
// 기본 생성자
public Person() {
this("미정", 0); // 다른 생성자를 호출
}
// 매개변수가 두 개인 생성자
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
public class Main {
public static void main(String[] args) {
Person person = new Person(); // 기본 생성자 호출
System.out.println("이름: " + person.name + ", 나이: " + person.age);
}
}
출력 결과:
마치며
생성자는 객체 초기화를 위해 필수적으로 사용되며, 다양한 형태로 활용될 수 있습니다. 기본 생성자와 매개변수가 있는 생성자를 적절히 사용하면 코드의 가독성과 유지보수성이 크게 향상됩니다. 또한, 생성자 오버로딩과 this()
키워드를 활용하면 중복 코드를 줄이고 보다 효율적인 설계를 할 수 있습니다. 자바 프로그래밍에서 생성자를 잘 활용하여 더욱 견고한 코드를 작성해 보세요!
'개발 부트캠프 > 백엔드' 카테고리의 다른 글
[Java] 상속, 오버로딩, 오버라이딩 (1) | 2025.01.03 |
---|---|
[Java] static (0) | 2025.01.03 |
[Java] 패키지 & 접근 제어자 (0) | 2025.01.03 |
[Java] Class & Object (클래스 & 객체) (0) | 2025.01.03 |
[Java] GC(Garbage Collection) (2) | 2024.12.06 |