[Java] OOP_메소드 오버로딩(method overloading)

jeong·2021년 5월 24일
0

Java 자바

목록 보기
14/28

메소드 오버로딩(method overloading)

클래스 내 같은 이름의 메소드를 여러 개 선언하는 것을 말한다.

메소드 오버로딩이 필요한 이유

매개값을 다양하게 처리할 수 있기 때문에 필요하다.

메소드 오버로딩이 성립하기 위한 조건

1) 메소드 이름이 같아야 한다.
2) 매개변수 갯수나 타입이 달라야 한다.
3) 반환 타입은 영향없다.

//오버로딩이 아닌 예시1 : 1)번 조건만 성립, 매개변수 갯수 타입도 같다. 
//=> 메소드 중복정의, 에러남: add(int, int) 이미 정의되어있다
int add(int a, int b) {return a+b;}
int add(int x, int y) {return x+y;}
//오버로딩이 아닌 예시2 : 1)번 조건만 성립, 반환타입 다른 것은 상관이 없다. 
//=> 메소드 중복정의
int add(int a, int b) {return a+b;}
long add(int a, int b) {return (long)(a+b);}
//오버로딩 : 1), 2)번 조건 성립
long add(int a, int b) {return a+b;}
long add(long a, long b) {return a+b;}

오버로딩의 올바른 예

//메소드 3개 이름이 같고 매개변수 타입이 다르다. 
class MyMath {
	int add(int a, int b) {
    	System.out.print("int add(int a, int b) - ");
        return a+b;
    }
    
    long add(long a, long b) {
    	System.out.print("long add(int a, int b) - ");
        return a+b;
    }
    int add(int[] a) { //배열의 모든 요소의 합을 결과로 돌려준다.
    	System.out.print("int add(int[] a) - ");
        int result=0;
        for(int i=0; i<a.length; i++)
        	result+=a[i];
            
        return result;
    }
}
profile
배우는 초보개발자

0개의 댓글