본문 바로가기
프로그래밍언어/Java

[Java] : Overloading이란?

by 오주현 2022. 1. 15.
반응형

Overloading이란?

오버로딩은 클래스 내에서 메소드 이름이 같아도 파라미터의 개수나 데이터 형식만 다르면 여러 개를 선언할 수 있는 것을 말한다.

참고로, 생성자도 메소드의 한 종류이므로 오버로딩이 가능하다.

Overloading 코딩

class CarSetting {

    //필드
    private String color;
    private int speed;

    CarSetting(){
    }

    CarSetting(String color) {
        this.color = color;
    }

    CarSetting(String color, int speed) {
        this.color = color;
        this.speed = speed;
    }

    public String getColor() {
        return color;
    }

    public int getSpeed() {
        return speed;
    }
}

파라미터 이름은 같지만 개수는 다른 3개의 생성자를 만들었다.

public class Car {
    public static void main(String[] args) {

        CarSetting myCar1 = new CarSetting();
        CarSetting myCar2 = new CarSetting("Red");
        CarSetting myCar3 = new CarSetting("Green", 100);

        System.out.println("자동차1의 색상은 " + myCar1.getColor() + "입니다.");
        System.out.println("자동차1의 속도는 " + myCar1.getSpeed() + "입니다.");
        System.out.println();
        System.out.println("자동차2의 색상은 " + myCar2.getColor() + "입니다.");
        System.out.println("자동차2의 속도는 " + myCar2.getSpeed() + "입니다.");
        System.out.println();
        System.out.println("자동차3의 색상은 " + myCar3.getColor() + "입니다.");
        System.out.println("자동차3의 속도는 " + myCar3.getSpeed() + "입니다.");

    }
}

인스턴스를 할 때도 마찬가지로 셋 다 다른 생성자를 사용해서 만들었다.

출력을 해보면 String 형식에는 null값이 들어가고, int 형식에는 0값이 따로 초기화 하지 않을 시 디폴트 값으로 들어가는 것을 확인할 수 있다.

같은 이름의 파라미터를 3개나 생성했는데 정상적으로 작동하는 이유는 같은 이름의 파라미터는 3개지만 이 3개가 서로 다른 값을 가지고 있기 때문에 가능하다.

이런 것을 오버로딩이라고 한다.

반응형

댓글