[Java] 생성자 오버로딩

1 분 소요

생성자 오버로딩


생성자 오버로딩

매개변수의 타입, 개수, 순서가 다르게 여러 개의 생성자 선언

/* Car.java */

package ch06.sec07.exam04;

public class Car {
    //필드 선언
    String company = "현대자동차";
    String model;
    String color;
    int maxSpeed;

    //생성자 선언
    Car() {}

    Car(String model){
        this.model = model;
    }

    Car(String model, String color){
        this.model = model;
        this.color = color;
    }

    Car(String model, String color, int maxSpeed){
        this.model = model;
        this.color = color;
        this.maxSpeed = maxSpeed;
    }
}

/* CarExample.java */

package ch06.sec07.exam04;

public class CarExample {
    public static void main(String[] args) {
        Car car1 = new Car(); // 생성자 호출
        System.out.println("car1.compnay: "+car1.company);
        System.out.println();

        Car car2 = new Car("자가용"); // 생성자 호출
        System.out.println("car2.company: "+car2.company);
        System.out.println("car2.model: "+car2.model);
        System.out.println();

        Car car3 = new Car("자가용", "빨강");
        System.out.println("car3.company: "+car3.company);
        System.out.println("car3.model: "+car3.model);
        System.out.println("car3.color: "+car3.color);
        System.out.println();

        Car car4 = new Car("자가용", "빨강", 200);
        System.out.println("car4.company: "+car4.company);
        System.out.println("car4.model: "+car4.model);
        System.out.println("car4.color: "+car4.color);
        System.out.println("car4.maxSpeed: "+car4.maxSpeed);
        System.out.println();
    }
}

다른 생성자 호출

생성자 오버로딩이 많아질 경우 생성자 간의 중복코드가 발생할 수 있다. 이 경우에는 공통 코드를 한 생성자에만 집중적으로 작성하고, 나머지 생성자는 this(…)를 사용하여 공통 코드를 가지고 있는 생성자를 호출하는 방법으로 개선할 수 있다.

package ch06.sec07.exam05;

public class Car {
    // 필드 선언
    String company = "현대자동차";
    String model;
    String color;
    int maxSpeed;

    Car(String model){
        //20라인 생성자 호출
        this(model,"은색", 250);
    }

    Car(String model, String color){
        //20라인 생성자 호출
        this(model, color, 250);
    }

    Car(String model, String color, int maxSpeed){
        this.model = model;
        this.color = color;
        this.maxSpeed = maxSpeed;
    }
}

package ch06.sec07.exam05;

public class CarExample {
    public static void main(String[] args) {
        Car car1 = new Car("자가용"); // 생성자 호출
        System.out.println("car1.company: "+car1.company);
        System.out.println("car1.model: "+car1.model);
        System.out.println();

        Car car2 = new Car("자가용", "빨강"); // 생성자 호출
        System.out.println("car2.company: "+car2.company);
        System.out.prinåçtln("car2.model: "+car2.model);
        System.out.println("car2.color: "+car2.color);
        System.out.println();

        Car car3 = new Car("택시", "검정", 200); // 생성자 호출
        System.out.println("car3.company : "+car3.company);
        System.out.println("car3.model : "+car3.model);
        System.out.println("car3.color : "+car3.color);
        System.out.println("car3.maxSpeed : "+car3.maxSpeed);

    }
}

  • 출처: 이것이 자바다

카테고리:

업데이트:

댓글남기기