Programming/Java

[JAVA] 생성자(constructor), 자바 생성자

Supreme_YS 2021. 10. 11. 19:14

남궁성님의 자바의 정석 강의를 기반으로 작성했습니다.


- 생성자 (Constructor)

* 인스턴스가 생성될 때마다 호출되는 인스턴스 초기화 메서드

* 인스턴스 생성시 수행할 작업(IV(인스턴스 변수) 초기화)에 사용

 

- 생성자 규칙

* 이름이 클래스 이름과 같아야 합니다.

* 리턴(return)값이 없습니다. 단, 생성자의 경우는 void를 붙이지 않습니다. 항상 반환값이 없기 때문입니다. 

* 모든 클래스는 반드시 한 개 이상의 생성자가 있어야 합니다.

 

- 기본 생성자 (default constructor)

* 매개 변수가 없는 생성자

* 생성자가 하나도 없을 때만, 컴파일러가 자동 추가

 

public class Constructor {
    public static void main(String[] args) {
        Data_1 d1 = new Data_1();
        Data_2 d2 = new Data_2(); // 기본생성자 호출

        // 기존에 사용하던 방식  
        Car c = new Car();
        c.color = "BLACK";
        c.gearType = "MANUAL";
        c.door = 4; 

        // 생성자를 통한 코드를 간략히 하기 
        Car c = new Car("BLACK", "MANUAL", 4);

    }
}

class Data_1 { // 생성자 0개 : 컴파일러가 자동으로 생성자를 추가시켜 줌
    int value;
    public Data_1() { } // 기본 생성자 생성
}

class Data_2 { // 생성자 1개가 있기 때문에 반드시 아래의 기본 생성자를 추가시켜줘야 한다.
    int value;

    public Data_2() {} // 기본 생성자 생성

    Data_2(int x) { // 매개변수가 있는 생성자
        value = x;
    }
}

class Car {
    String color; // 인스턴스 변수
    String gearType;
    int door;

    public Car() {} // 기본 생성자
    public Car(String c, String g, int d) { // 매개 변수가 있는 생성자
        color = c;
        gearType = g;
        door = d;
    }
}