객체를 생성하는 시점에 필드 초기화 등 어떤 작업을 하고 싶다면 생성자를 사용한다.
기본 생성자
• 매개변수가 없는 생성자를 기본생성자라고 한다.
• 생성자는 인스턴스를 생성하고 나서 즉시 호출된다.
• 생성자의 이름은 클래스 이름과 같아야하고 반환 타입이 없다.
• 클래스에 생성자가 하나도 없으면 자바 컴파일러는 기본 생성자를 자동으로 만들어 준다.
public class Animal {
String name;
int age;
}
Animal animal = new Animal();
• 생성자를 정의하지 않았지만 자동으로 만들어주어 사용 가능하다
• 생성자가 하나라도 있으면 기본 생성자를 만들지 않는다.
생성자로 필드 초기화
public class Animal {
String name;
int age;
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
}
• 생성자명은 class명과 같다.
Animal animal = new Animal();
animal.name = "happy";
animal.age = 10;
Animal animal = new Animal("happy", 10);
• 위처럼 생성자 호출과 동시에 초기화를 진행할 수 있다.
생성자 오버로딩
• 생성자도 메서드 오버로딩처럼 매개변수만 다르게해서 여러 생성자를 제공할 수 있다.
public class Product {
String name;
int price;
int amount = 1;
public Product(String name, int price) {
this.name = name;
this.price = price;
}
public Product(String name, int price, int amount) {
this.name = name;
this.price = price;
this.amount = amount;
}
}
• 생성자에서 중복된 코드를 오버로딩을 통해 아래처럼 해결할 수 있다.
public Product(String name, int price) {
this.name = name;
this.price = price;
}
public Product(String name, int price, int amount) {
this(name, price);
this.amount = amount;
}
• 두 생성자의 중복된 코드를 this()를 사용하면 내부에서 자신의 생성자를 호출할 수 있다.
• this는 인스턴스 자신의 참조값을 가리킨다.
'java > basic' 카테고리의 다른 글
| 스택 트레이스와 예외 포함의 중요성 (1) | 2025.06.10 |
|---|---|
| 자바 예외 이해하기 (체크 예외, 런타임 예외) (1) | 2025.06.09 |
| 자바 메모리 구조 (스택, 힙, 메서드 ...) (0) | 2024.05.05 |
| 자바 클래스, 객체, 인스턴스 (0) | 2024.03.31 |