객체를 생성하는 시점에 필드 초기화 등 어떤 작업을 하고 싶다면 생성자를 사용한다.
기본 생성자
1. 매개변수가 없는 생성자를 기본생성자라고 한다.
2. 클래스에 생성자가 하나도 없으면 자바 컴파일러는 기본 생성자를 자동으로 만들어 준다.
3. 생성자가 하나라도 있으면 기본 생성자를 만들지 않는다.
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' 카테고리의 다른 글
자바 메모리 구조 (스택, 힙, 메서드 ...) (0) | 2024.05.05 |
---|---|
자바 클래스, 객체, 인스턴스 (0) | 2024.03.31 |