-> 블로그 이전

[Java] 메소드 오버로딩

2021. 11. 19. 15:07Language`/Java

메소드 오버로딩 (Method Overloading)

- 한 클래스내이름이 같지만, 매개변수의 타입 or 개수가 서로 다른 여러 개의 메소드를 중복 작성하는 것

- 자바 다형성의 한 경우

- 자바 컴파일러에 의해 판단 

 

조건

1. 메소드 이름이 동일 

2. 매개변수의 개수 or 타입이 서로 달라야 함 

※ 메소드의 리턴 타입, 접근 지정자는 메소드 오버로딩과 관계 X

 

 

성공 사례 1)

class MethodOverloading{
    public int getSum(int i, int j){
        return i+j;
    }
    public int getSum(int i, int j, int k){
        return i+j+k;
    }
}

≫ 메소드의 이름 동일 (getSum)

≫ 매개변수의 개수가 서로 다름 ( getSum(int i, int j) / getSum(int i, int j, int k) )

 

성공사례 2)

class MethodOverloading{
    public int getSum(int i, int j){
        return i+j;
    }
    public double getSum(double i, double j){
        return i+j;
    }
}

≫ 메소드의 이름 동일 (getSum)

≫ 매개변수의 타입이 서로 다름 ( getSum(int i, int j) / getSum(double i, double j) )

 

실패 사례

class MethodOverloading{
    public int getSum(int i, int j){
        return i+j;
    }
    public double getSum(int i, int j){
        return (double)i+j;
    }
}

≫ 매개변수의 개수, 타입이 둘다 동일하다

≫ 오류 발생

'getSum(int, int) is already defined in 'MethodOverloading'
'getSum(int, int) clashes with getSum(int, int); both method have same erasure