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 |