자바에서 생성자는 객체를 생성할 때 호출되는 특별한 메서드입니다. 생성자의 주요 목적은 객체를 초기화하는 것입니다. 생성자는 클래스와 동일한 이름을 가지며, 반환 타입이 없습니다.
생성자의 기본 개념
생성자의 정의: 생성자는 클래스의 이름과 동일하며, 반환 타입이 없습니다. 기본적으로 객체가 생성될 때 자동으로 호출됩니다.
기본 생성자 (Default Constructor): 명시적으로 생성자를 정의하지 않으면, 자바 컴파일러가 기본 생성자를 자동으로 생성합니다. 기본 생성자는 파라미터가 없는 생성자입니다.
사용자 정의 생성자: 클래스에서 생성자를 명시적으로 정의할 수 있습니다. 이러한 생성자는 클래스의 필드를 초기화하거나 특정 작업을 수행할 수 있습니다.
생성자 정의와 사용
1. 기본 생성자
클래스에 생성자를 명시적으로 정의하지 않으면, 자바 컴파일러는 기본 생성자를 자동으로 추가합니다.
java
코드 복사
public class Person {
String name;
int age;
}
// 객체 생성
Person p = new Person();
여기서 Person 클래스는 기본 생성자를 사용하여 객체를 생성합니다.
2. 사용자 정의 생성자
사용자 정의 생성자는 필드를 초기화하는 데 유용합니다. 생성자는 매개변수를 받아 객체의 초기 상태를 설정할 수 있습니다.
예제:
java
코드 복사
public class Person {
String name;
int age;
// 사용자 정의 생성자
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 메서드
public void introduce() {
System.out.println("My name is " + name + " and I am " + age + " years old.");
}
}
// 객체 생성
public class Main {
public static void main(String[] args) {
Person p = new Person("Alice", 30);
p.introduce(); // My name is Alice and I am 30 years old.
}
}
여기서 Person 클래스는 name과 age를 초기화하는 사용자 정의 생성자를 정의합니다. 객체를 생성할 때 이 생성자를 사용하여 name과 age를 설정합니다.
3. 생성자 오버로딩
하나의 클래스에 여러 생성자를 정의할 수 있으며, 이를 생성자 오버로딩이라고 합니다. 생성자 오버로딩은 서로 다른 매개변수를 가진 여러 생성자를 정의하여 객체를 다양한 방법으로 초기화할 수 있게 합니다.
예제:
java
코드 복사
public class Person {
String name;
int age;
// 기본 생성자
public Person() {
this.name = "Unknown";
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 p1 = new Person(); // 기본 생성자 호출
Person p2 = new Person("Bob", 25); // 사용자 정의 생성자 호출
System.out.println(p1.name + " " + p1.age); // Unknown 0
System.out.println(p2.name + " " + p2.age); // Bob 25
}
}
여기서 Person 클래스는 기본 생성자와 사용자 정의 생성자를 모두 가지고 있으며, 두 생성자를 사용하여 객체를 다양한 방법으로 초기화할 수 있습니다.
생성자의 주요 특징
생성자는 반환 타입이 없다: 메서드와 달리 생성자는 반환 타입이 없으며, 클래스의 이름과 동일한 이름을 가집니다.
자동 호출: 객체가 생성될 때 생성자가 자동으로 호출됩니다.
객체 초기화: 생성자는 객체의 필드를 초기화하거나 객체의 초기 상태를 설정하는 데 사용됩니다.
오버로딩: 여러 생성자를 정의하여 다양한 방법으로 객체를 초기화할 수 있습니다.
생성자와 this 키워드
this 키워드: 생성자 내부에서 this 키워드는 현재 객체를 참조합니다. 주로 매개변수와 필드의 이름이 동일할 때, 필드에 값을 할당하기 위해 사용됩니다.
예제:
java
코드 복사
public class Person {
String name;
int age;
// 사용자 정의 생성자
public Person(String name, int age) {
this.name = name; // this.name는 클래스 필드, name은 매개변수
this.age = age;
}
}
여기서 this.name은 클래스의 필드를, name은 생성자의 매개변수를 참조합니다.
이러한 개념을 이해하면 자바에서 객체를 효과적으로 생성하고 초기화할 수 있으며, 다양한 초기화 방법을 통해 더 유연한 프로그램을 작성할 수 있습니다.
카테고리 없음