본문 바로가기
개발/자바

자바 생성자

by wusdlqslek 2024. 2. 5.

생성자의 기본 개념

생성자는 클래스의 이름과 동일하며, 반환 타입을 가지지 않는다. 이는 메서드와의 가장 큰 차이점이다. 생성자의 주 목적은 객체 생성 시 초기화 작업을 수행하는 것이다. 예를 들어, 'Car'라는 클래스가 있다면, 그 생성자의 이름도 'Car'가 될 것이다.

class Car {
    Car() {
        // 생성자 코드
    }
}

생성자의 선언과 호출

생성자는 매개변수가 없을 수도 있고, 하나 이상의 매개변수를 가질 수도 있다. 매개변수를 통해 객체 생성 시 필요한 값을 전달할 수 있다. 자바에서 객체를 생성할 때는 new 키워드와 함께 생성자를 호출한다.

Car myCar = new Car(); // 매개변수가 없는 생성자 호출

매개변수가 있는 생성자를 사용하는 경우, 객체 생성 시 해당 값을 제공해야 한다.

Car myCar = new Car("아반떼", 2016, "흰색", 200); // 매개변수가 있는 생성자 호출

기본 생성자(default constructor)

클래스에 생성자를 명시적으로 선언하지 않으면, 자바 컴파일러는 자동으로 기본 생성자를 추가한다. 기본 생성자는 매개변수가 없고 아무런 동작도 수행하지 않는다.

class Car {
    // 컴파일러가 자동으로 추가하는 기본 생성자
    Car() {
    }
}

하지만, 매개변수가 있는 생성자를 하나라도 선언하면, 컴파일러는 기본 생성자를 추가하지 않는다. 이 경우, 명시적으로 기본 생성자를 선언해야 할 수도 있다.

class Car {
    Car(String modelName) {
        // 생성자 코드
    }

    Car() {
        // 명시적으로 선언한 기본 생성자
    }
}

this 참조 변수와 this() 메소드

this 참조 변수는 현재 객체를 가리키는 데 사용된다. 생성자나 메서드 내에서 인스턴스 변수에 접근할 때 유용하다. 매개변수 이름과 인스턴스 변수 이름이 같을 경우, this를 사용하여 둘을 구분할 수 있다.

class Car {
    private String modelName;

    Car(String modelName) {
        this.modelName = modelName; // this를 사용하여 인스턴스 변수를 지정
    }
}

this() 메소드는 생성자 내부에서 다른 생성자를 호출할 때 사용한다. 이를 통해 코드의 중복을 줄일 수 있다.

class Car {
    private String modelName;
    private int modelYear;

    Car(String modelName) {
        this(modelName, 0); // 다른 생성자 호출
    }

    Car(String modelName, int modelYear) {
        this.modelName = modelName;
        this.modelYear = modelYear;
    }
}

생성자는 객체의 초기 상태를 설정하는 중요한 역할을 한다. 올바른 생성자를 사용하면 코드의 유지 보수성과 가독성이 크게 향상된다.

반응형

댓글