본문 바로가기

Java의 정석

객체 지향 개념 - 13 매개변수가 있는 생성자

매개변수가 있는 생성자

생성자도 메서드처럼 매개변수를 선언하여 호출 시 값을 넘겨받아서 인스턴스의 초기화 작업에 사용할 수 있다. 인스턴스마다 각기 다른 값으로 초기화되어야 하는 경우가 많기 때문에 매우 유용하다.

 

// color, gearType, door - 인스턴스 변수
// Car() {}, Car(String c, String g, int d) {} - 생성자

class Car {
    String color;
    String gearType;
    int door;
    
    Car() {}
    Car(String c, String g, int d) {
        color = c;
        gearType = g;
        door = d;
    }
}

Car 인스턴스를 생성할 때 생성자 Car()를 사용한다면, 인스턴스를 생성한 다음에 인스턴스 변수들을 따로 초기화해주어야 하지만 매개변수가 있는 생성자를 사용한다면 인스턴스를 생성하는 동시에 원하는 값으로 초기화할 수 있음.

 

생성자를 잘 활용하면 보다 간결하고 직관적인 객체지향적인 코드를 작성할 수 있다.

 

인스턴스를 생성할 때는 다음의 2가지 사항을 결정해야 한다.

  • 클래스 - 어떤 클래스의 인스턴스를 생성할 것인가?
  • 생성자 - 선택한 클래스의 어떤 생성자로 인스턴스를 생성할 것인가?
class Car {
    String color;
    String gearType;
    int door;
    
    Car() {}
    
    Car(String c, String g, int d) {
        color = c;
        gearType = g;
        door = d;
    }
}

class paramConstructorExam {
    public static void main(String[] args) {
        Car c1 = new Car();
        c1.color = "white";
        c1.gearType = "auto";
        c1.door = 4;
        
        Car c2 = new Car("white", "auto", 4);
        
        System.out.println("c1 : " + c1.color + ", " + c1.gearType + ", " + c1.door);
        System.out.println("c2 : " + c2.color + ", " + c2.gearType + ", " + c2.door);
        // c1 : white, auto, 4
        // c2 : white, auto, 4
    }
}