본문 바로가기
java/basic

생성자

by cactuslog 2024. 4. 13.
객체를 생성하는 시점에 필드 초기화 등 어떤 작업을 하고 싶다면 생성자를 사용한다.

 

 

기본 생성자

•  매개변수가 없는 생성자를 기본생성자라고 한다. 

 

•  생성자는 인스턴스를 생성하고 나서 즉시 호출된다.

 

•  생성자의  이름은 클래스 이름과 같아야하고 반환 타입이 없다.

 

•  클래스에 생성자가 하나도 없으면 자바 컴파일러는 기본 생성자를 자동으로 만들어 준다.

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는 인스턴스 자신의 참조값을 가리킨다.