본문 바로가기

Java

오버로딩

728x90

오버로딩 : 한 클래스 내에 같은 이름의 메서드를 여러개 정의하는 것

 

조건)

1. 메서드 이름이 같아야 한다.

2. 매개 변수의 개수 또는 타입이 달라야 한다.

*여러개를 정의했다고 무조건 오버로딩은 아니다.*

 

예)

-오버로딩이 안되는 예

 

// 이름만 다를 뿐 매개변수의 타입이 같기 때문에 오버로딩이 성립되지 않는다.
int add(int a, int b) {return a + b;}
int add(int x, int y) {return x + y;}

// 리턴타입만 다를 경우, 타입과 개수가 같아 오버로딩으로 간주되지 않는다.
int add(int a, int b) {return a + b;}
long add(int a, int b) {return (long)a + b;}

 

- 오버로딩이 되는 예

 

// 순서만 다를 경우, 매개변수 값에 의해 호출될 메서드가 구분될 수 있어 오버로딩 간주한다.
long add(int a, long b) {return a + b;}
long add(long a, int b) {return a + b;}

// 또 오버로딩 되는 것
int add(int a, int b) {return a + b;}
long add(long a, long b) {return a + b;}
long add(int[] a){
	long result = 0;
    for (int i = 0; i < a.length; i++){
    	result += a[i];
    }
    return result;
}

장점 : 같은 이름인 메서드들은 같은 기능을 한다는 것을 알 수 있다.

 

'Java' 카테고리의 다른 글

배열, 배열레퍼런스, 배열인스턴스  (0) 2021.10.28
변수의 종류  (0) 2021.09.29
변수  (0) 2021.09.29
예외처리  (0) 2021.09.19
생성자는 언제 쓰나?  (0) 2021.09.14